rsync
有多种选项可以从文件中读取各种配置,这样你就不必将一堆单独的--include
或--exclude
选项链接在一起。所有这些选项(据我所知)都是从你的当地的电脑:
--exclude-from=FILE --include-from=FILE --files-from=FILE
该文档--files-from=FILE
甚至澄清说你可以将它与本地或远程文件一起使用:
此外,如果在文件前面指定“host:”(主机必须与传输的一端匹配),则可以从远程主机而不是本地主机读取 --files-from 文件。作为一种简便方法,您可以只指定前缀“:”来表示“使用传输的远程端”。
我想知道的是 的等价物在哪里或是什么--filter
?我们有--include
和--include-from
;--exclude
和--exclude-from
。但是哪里--filter-from
?(或者与之最接近的是什么?)
关于包含/排除模式规则给出使用模式规则列表的示例,就好像它们包含在文件中一样......
+ /some/
+ /some/path/
+ /some/path/this-file-is-found
+ /file-also-included
- *
但我发现在文件中使用它们的唯一提及是从merge
或加载的文件dir-merge
:
merge, . specifies a merge-file to read for more rules.
dir-merge, : specifies a per-directory merge-file.
我找不到任何关于这是指本地还是远程主机上的合并文件的信息,但从我到目前为止的尝试来看,它似乎只适用于偏僻的主持人。
答案1
这正是选择:
rsync --filter "merge /some/filterlist.conf"
(请注意-F
是 的别名--filter "dir-merge /.rsync-filter"
。)
merge
文件从当地的(客户端)系统(除非您使用 明确将选项传递给服务器-M
)。如果源是远程的,则所有过滤规则都会自动发送给它。
同时dir-merge
总是适用于来源,无论是否本地。(手册页:“必须在发送端创建这些每个目录的规则文件,因为正在扫描发送端以查找可供传输的文件。”)