如何复制扩展的文件,仅当目标中存在相同的文件?

如何复制扩展的文件,仅当目标中存在相同的文件?

这可能听起来很奇怪,但我真的只想复制现存的文件,因此这些文件将被更新/覆盖,并且不会添加任何新文件。

我想复制单个扩展名的文件。使用以下脚本行效果很好:

rsync -avm --include='*.bak' -f 'hide,! */' /Directory-to-be-backed-up/ /media/USB_stick

但我还希望仅当文件已存在于目的地时才复制该文件(覆盖它)。

例如,我有以下 3 个文件/tmp/a

/tmp/a/1.h
/tmp/a/2.h
/tmp/a/internal/3.h

这两个文件位于/tmp/b

/tmp/b/1.h
/tmp/b/internal/3.h

我想更新/覆盖现有文件/tmp/b使用 中的文件/tmp/a,但不复制任何新文件(如/tmp/a/2.h)。

有办法吗?

答案1

我会稍微重新排序你的命令,首先我会删除--include并将右侧放入*.bak源路径。接下来你可以添加--existing仅复制现有文件。

一种可能的方法是(未经测试):

rsync -avm --existing /Directory-to-be-backed-up/*.bak /media/USB_stick

相关内容