如何让rsync排除任何名为cache的目录?

时间:2011-10-16 23:20:55

标签: directory rsync

我是rsync的新手,并且已经阅读了一些关于排除文件和目录的内容,但我并不完全理解并且似乎无法使其正常工作。

我只是尝试运行服务器webroot中所有网站的备份,但不想要任何CMS的缓存文件。

是否可以排除任何名为cache的目录?

我已经尝试了很多事情(我不记得了),但最近我一直在尝试这些事情:

sudo rsync -avzO -e --exclude *cache ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/

和此:

sudo rsync -avzO -e --exclude cache/ ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/

和此:

sudo rsync -avzO -e --exclude */cache/ ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/

和此:

sudo rsync -avzO -e --exclude *cache/ ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/

很抱歉,如果这很容易,我只是找不到我理解的信息,因为他们都在谈论要排除的路径。

只是我没有想要排除的特定路径 - 如果有意义的话只是一个目录名。

1 个答案:

答案 0 :(得分:8)

rsync --exclude cache/ ....

应该像桃子一样工作。我认为你可能会混淆一些事情,因为-e需要一个选项(如-e "ssh -l ssh-user")。在查看命令行时,编辑更接近,事实证明这正是您的问题所在。你应该说

--exclude cache/ -e ssh

虽然您可以删除-e ssh,因为ssh是默认值。


我还建议您查看过滤规则:

rsync -FF ....

通过这种方式,您可以在整个目录树中包含.rsync-filter文件,其中包含

等内容
-cache/

这使事情变得更加灵活,使命令行更具可读性,并且您可以在特定子树中创建异常。