如何仅复制目录中覆盖其他文件的文件

如何仅复制目录中覆盖其他文件的文件

我想复制并覆盖目标中存在的文件。也就是说,排除源 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 个文件

其中bazfoo.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)

仅更新bazfoo.hidden。 (默认情况下,仅忽略目标上存在的文件。)


您可以验证,如果没有--existingbar也会被复制:

$ 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 上查看此内容。有几种解决方案。我没有尝试过,但我认为它们应该有效并解决您的问题:

https://stackoverflow.com/questions/47154327/move-or-copy-a-file-if-that-file-exists?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

希望它对你有帮助。;)

相关内容