什么rsync过滤器-f'隐藏,!*/'做什么?

ref*_*fle 1 bash terminal rsync

我想只使用rsync同步特定文件.我发现:

rsync --include='SpecificFiles*' -f 'hide,! */' ~/src ~/dst
Run Code Online (Sandbox Code Playgroud)

"包括"是显而易见的,但"-f ......"部分有什么作用?谢谢!

Joh*_*024 6

rsync --include='SpecificFiles*' -f 'hide,! */' ~/src ~/dst
Run Code Online (Sandbox Code Playgroud)

首先, - include告诉rsync复制匹配的所有内容SpecificFiles*.

其次,该规则-f 'hide,! */'隐藏了所有非目录.这意味着除非与先前的包含规则匹配,否则不会复制常规文件.

更详细地说,hide,启动隐藏规则.由于*/匹配所有目录,其否定! */匹配所有非目录.因此,-f 'hide,! */'隐藏所有非目录.

另外,除非还指定了删除选项,否则hide类似于exclude.在这种情况下,如果隐藏的文件已经在目的地,则它将被删除,就好像它在源处不存在一样.相反,如果排除的文件已在目标位置,则不会删除目标文件.