2016-07-07 71 views
0

我愿做一个rsync的:在一个分支排除目录,而不是在其他

rsync master slave 

有下列限制:目录master/foo/xxx应该被复制被排除,但目录master/bar/xxx应该被复制。

我不能写

rsync --exclude xxx master slave 

,因为这也将排除master/bar/xxx。令我惊讶的是,我也无法使用

rsync --exclude master/foo/xxx master slave 

因为它复制BOTH xxx目录(为什么?)。

当然我可以恢复到写两个的rsync的:

rsync --exclude xxx master slave 
rsync master/bar/xxx slave/bar/xxx 

,但我不知道这是否不能做任何简单。

回答

1

正确的命令是这样的:

rsync --exclude /foo/xxx master slave 

包括/排除与/开始规则是相对于转印(不是文件系统的根)的根。

以其他字符开头的规则匹配到每个文件名的末尾,因此foo/xxx也可以工作,但可能会匹配目录树中某个位置有foo的地方。

您的命令确实是而不是因为“主”位于传输根目录之外。