防止rsync删除与给定模式匹配的目标文件

47

我正在使用rsync命令将文件从源目录同步到目标目录:

rsync -av --delete source destination

目标端只有一个目录,源端没有这个目录。我希望防止rsync删除这个目录。是否有选项可以传递给rsync,以防止在同步时删除此目录?

2个回答

54

您可以使用--exclude来排除文件/目录。这将防止somedir目录被同步/删除:

rsync -avrc --delete --exclude somedir source destination

5
如果您想从目录树的特定位置中仅排除somedir,则可以使用“/”来锚定排除。这将提高性能- rsync只需要检查一次路径!例如: rsync -avrc --delete --exclude /path/p2/somedir source destination - Randy Skretka
1
“-a” 包含了 “-r”,不需要额外添加。 - Tom Hale
1
对于任何想知道上面 -avrcrc 是什么意思的人,它们与这个问题无关。(r=递归,c=基于校验和跳过) - Joschua

51

如同类似问题中提到的,通过使用--filter选项和protect规则可以实现此目的:

$ rsync ... --filter 'protect /remote-directory-to-keep/' ...

与当前被接受的答案不同,使用--filter是有用的。例如,如果您还希望在--delete-excluded中使用--exclude,则可以使用它。


4
这也适用于 --filter 'protect *.js' --filter 'protect *.js.map' - stringparser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接