我正在努力解决rsyncfilter语法来执行复杂的包含/排除,并试图实现以下内容:
Include / Exclude /home Include /home/user1/* Include /home/user2/subdir/*
我已经在filter语法上尝试了许多变体,尽pipe多次阅读手册页,但我无法得到这种效果。 Rsyncfilter似乎是非常强大的,我发现很难相信他们不能处理这种常见的情况。
在使用排除规则之前,需要将所有父目录包括到所需的目录中。
例如,我在备份脚本中使用以下内容:
rsync -av \ --filter='+ /var/' \ --filter='+ /var/backups/' \ --filter='- /var/*' \ / \ $DEST
所以在你的情况下,你需要像下面这样的东西:
rsync -av \ --filter='+ /home/' \ --filter='+ /home/user1/' \ --filter='+ /home/user2/' \ --filter='+ /home/user2/subdir/' \ --filter='- /home/user2/*' \ --filter='- /home/*' \ / \ $DEST
在命令行上:
rsync --dry-run --verbose --recursive --include=/home/user1 --exclude=/home/* / DEST
删除--dry-run ,使其function,用您的目的地replace“DEST”,如果需要添加用户和主机到源“/”。
从规则文件:
rsync --dry-run --verbose --recursive --filter='merge /etc/rsync/somerules.rules' / DEST
/etc/rsync/somerules.rules的内容可能是:
+/ /home/user1 -/ /home/*
你应该testing这些,你可能需要做一些调整,但这应该让你开始。