rsync:排除一个分支中的目录,但不排除其他分支中的目录
rsync: Exclude directory in one branch, but not in other
我想做一个
rsync master slave
具有以下限制:目录 master/foo/xxx
不应被复制,但目录 master/bar/xxx
应被复制。
我不会写
rsync --exclude xxx master slave
因为这也会排除 master/bar/xxx
。令我惊讶的是,我也不能使用
rsync --exclude master/foo/xxx master slave
因为它复制了两个 xxx 目录(为什么?)。
当然我可以恢复写两个 rsync:
rsync --exclude xxx master slave
rsync master/bar/xxx slave/bar/xxx
但我想知道这是否不能做得更简单。
正确的命令是这样的:
rsync --exclude /foo/xxx master slave
Include/exclude 以 /
开头的规则是相对于传输的根目录(而不是文件系统的根目录)。
以其他字符开头的规则与每个文件名的末尾相匹配,因此 foo/xxx
也可以工作,但如果在其他地方有 foo
,则可能会匹配您不期望的目录目录树。
您的命令没有工作,因为"master"在传输的根目录之外。
我想做一个
rsync master slave
具有以下限制:目录 master/foo/xxx
不应被复制,但目录 master/bar/xxx
应被复制。
我不会写
rsync --exclude xxx master slave
因为这也会排除 master/bar/xxx
。令我惊讶的是,我也不能使用
rsync --exclude master/foo/xxx master slave
因为它复制了两个 xxx 目录(为什么?)。
当然我可以恢复写两个 rsync:
rsync --exclude xxx master slave
rsync master/bar/xxx slave/bar/xxx
但我想知道这是否不能做得更简单。
正确的命令是这样的:
rsync --exclude /foo/xxx master slave
Include/exclude 以 /
开头的规则是相对于传输的根目录(而不是文件系统的根目录)。
以其他字符开头的规则与每个文件名的末尾相匹配,因此 foo/xxx
也可以工作,但如果在其他地方有 foo
,则可能会匹配您不期望的目录目录树。
您的命令没有工作,因为"master"在传输的根目录之外。