rsync filter -f 'hide,! */' 有什么作用?

What does the rsync filter -f 'hide,! */' do?

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

rsync --include='SpecificFiles*' -f 'hide,! */' ~/src ~/dst

"include" 很明显,但是“-f ...”部分的作用是什么? 谢谢!

-f, --filter=RULE    add a file-filtering RULE
-F                   same as --filter='dir-merge /.rsync-filter'

-f 'hide,! */' 隐藏所有非目录。

你为什么不读 following

还有,你试过了吗rsync --help

rsync --include='SpecificFiles*' -f 'hide,! */' ~/src ~/dst

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

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

更详细地说,hide, 启动隐藏规则。因为 */ 匹配所有目录,它的否定 ! */ 匹配所有非目录。因此,-f 'hide,! */' 隐藏所有非目录。

顺便说一句,hideexclude 类似,除非还指定了删除选项。在这种情况下,如果隐藏的文件已经在目的地,它被删除,就好像它在源不存在一样.相比之下,如果排除的文件已经在目标位置,则目标文件不会被删除。