2016-07-22 123 views
0

我想只与rsync同步特定文件。我发现:什么是rsync filter -f'隐藏,! * /'做什么?

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

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

+3

http://explainshell.com/explain?cmd=rsync+-f – str

+1

这可能是一个有趣的阅读:http://blog.mudflatsoftware.com/blog/2012/10/31/tricks-with- rsync-filter-rules/ – andlrc

回答

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

首先, - include告诉rsync的复制一切配套SpecificFiles*

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

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

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

+1

完美:)谢谢! – refle

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

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

你为什么不读following?你还试过rsync --help

+2

如果您仔细阅读我的问题(特别是标题),您会发现我知道“-f”称为过滤器。问题是:过滤器做了什么。 – refle