我正在尝试编写rsync过滤器语法来执行复杂的包含/排除,并尝试实现以下目的:
Include / Exclude /home Include /home/user1/* Include /home/user2/subdir/*
我已经尝试了很多关于过滤器语法的变体,尽管很多时候都阅读了man page,但我无法获得这种效果. Rsync过滤器似乎非常强大,我发现很难相信他们无法处理像这样的常见场景.
解决方法
在使用排除规则之前,您需要将所有父目录包含在所需目录中.
例如,我在备份脚本中使用以下内容:
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