这可能听起来很奇怪,但我真的只想复制现存的文件,因此这些文件将被更新/覆盖,并且不会添加任何新文件。
我想复制单个扩展名的文件。使用以下脚本行效果很好:
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