我想复制并覆盖目标中存在的文件。也就是说,排除源 xor 目标中存在的“孤立文件”。
答案1
您应该能够rsync
使用以下--existing
标志来实现这一点:
--existing skip creating new files on receiver
例如给定
$ tree -a A/ B/
A/
├── bar
├── baz
├── foo
└── .hidden
B/
├── bam
├── baz
├── foo
└── .hidden
0 个目录,8 个文件
其中baz
,foo
和.hidden
很常见,但bar
仅存在于源和bam
目标中,则(注意:为了说明目的,我添加了详细-v
和“试运行”标志):-n
$ rsync -avn --existing A/ B/
sending incremental file list
.hidden
baz
foo
sent 152 bytes received 25 bytes 354.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
仅更新baz
、foo
和.hidden
。 (默认情况下,仅忽略目标上存在的文件。)
您可以验证,如果没有--existing
,bar
也会被复制:
$ rsync -avn A/ B/
sending incremental file list
.hidden
bar
baz
foo
sent 155 bytes received 28 bytes 366.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
答案2
在 stackoverflow 上查看此内容。有几种解决方案。我没有尝试过,但我认为它们应该有效并解决您的问题:
希望它对你有帮助。;)