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

CMS*_*CSS 3 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/
Run Code Online (Sandbox Code Playgroud)

还有这个:

sudo rsync -avzO -e --exclude cache/ ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/
Run Code Online (Sandbox Code Playgroud)

还有这个:

sudo rsync -avzO -e --exclude */cache/ ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/
Run Code Online (Sandbox Code Playgroud)

还有这个:

sudo rsync -avzO -e --exclude *cache/ ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/
Run Code Online (Sandbox Code Playgroud)

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

只是我没有一个我想要排除的特定路径 - 只是一个目录名称,如果这是有道理的.

seh*_*ehe 8

rsync --exclude cache/ ....
Run Code Online (Sandbox Code Playgroud)

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

--exclude cache/ -e ssh
Run Code Online (Sandbox Code Playgroud)

虽然你可以放弃,-e ssh因为ssh是默认值.


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

rsync -FF ....
Run Code Online (Sandbox Code Playgroud)

这样,您可以在整个目录树中包含.rsync-filter文件,其中包含类似的内容

-cache/
Run Code Online (Sandbox Code Playgroud)

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