RSync-排除特定子目录及其子目录(子目录位于不同级别)


36

G'Day,

我正在使用rsync递归同步如下所示的远程文件夹树:

/folderA/a1/cache
/folderA/a1/cache/A1
/folderA/a1/cache/A2
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder/cache
/folderB/cache/
/folderB/b1/somefolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache/B1
/folderB/b1/somefolder/yetanotherfolder/cache/B2

我不知道文件夹树会是什么样,它会随着时间变化。所以我想要做的是递归地rsync上面的内容,但不包括文件夹“ cache”及其包含的任何子文件夹,这样我最终就可以同步了:

/folderA/a1
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder
/folderB/
/folderB/b1/somefolder
/folderB/b1/somefolder/yetanotherfolder/

有什么建议么?


Answers:


53

你想要--exclude旗帜。例如,本地rsync:

rsync -a --exclude cache/ src_folder/ target_folder/

就是这么简单-排除规则将匹配树中任何位置的名为“ cache”的目录。

有关更多信息,请在rsync手册页上查找“ --exclude”和“ FILTER RULES”部分:

http://www.samba.org/ftp/rsync/rsync.html


1
h!谢谢,这是我最喜欢的简单答案:-)
TheEdge 2011年

1
那树上没有任何地方怎么办?喜欢,仅排除a/cacheUPD看到这个答案
x-yuri

2
此外--exclude /cache/(以/开头)仅排除a/cache目录,而不排除任何名为的目录cache
阿米尔·阿里·阿克巴里

为什么a/ b/在上面的命令行中是什么意思?
Danijel 2015年

1
@Danijel:a/是我们正在同步(或复制)的目录;b/是我们要同步到的目录。
詹德(Jander)2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.