我想做一个
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
但我想知道这是不是可以做得更简单。
答案 0 :(得分:1)
正确的命令是:
rsync --exclude /foo/xxx master slave
以/
开头的包含/排除规则是相对于传输的根目录(而不是文件系统的根目录)。
以其他字符开头的规则与每个文件名的末尾匹配,因此foo/xxx
也可以使用,但如果目录中的其他位置有foo
,则可能与您不期望的目录匹配树。
你的命令不工作,因为“master”不在传输的根目录中。