我是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/
很抱歉,如果这很容易,我只是找不到我理解的信息,因为他们都在谈论要排除的路径。
只是我没有想要排除的特定路径 - 如果有意义的话只是一个目录名。
答案 0 :(得分:8)
rsync --exclude cache/ ....
应该像桃子一样工作。我认为你可能会混淆一些事情,因为-e
需要一个选项(如-e "ssh -l ssh-user"
)。在查看命令行时,编辑更接近,事实证明这正是您的问题所在。你应该说
--exclude cache/ -e ssh
虽然您可以删除-e ssh
,因为ssh是默认值。
我还建议您查看过滤规则:
rsync -FF ....
通过这种方式,您可以在整个目录树中包含.rsync-filter文件,其中包含
等内容-cache/
这使事情变得更加灵活,使命令行更具可读性,并且您可以在特定子树中创建异常。