如何让 rsync 从文件加载过滤规则列表(完整规则,不受 --include-from 等限制)?

如何让 rsync 从文件加载过滤规则列表(完整规则,不受 --include-from 等限制)?

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总是适用于来源,无论是否本地。(手册页:“必须在发送端创建这些每个目录的规则文件,因为正在扫描发送端以查找可供传输的文件。”)

相关内容