跳到主要内容

rsync 同步数据时,如何过滤出所有.txt的文件不同步?

参考答案:

在rsync同步数据时,如果您希望过滤出所有.txt文件不同步,您可以使用--exclude参数来排除这些文件。但是,由于rsync没有直接包含同步特定类型文件的选项,因此您可能需要一种间接的方法来实现这个需求。

一个常见的方法是使用--include--exclude参数结合通配符来过滤文件。下面是一个示例命令,它将同步源目录中的所有文件,但排除.txt文件:

rsync -av --include='*/' --exclude='*.txt' source_directory/ destination_directory/

这里,--include='*/' 表示包含所有目录(确保子目录中的文件也会被考虑),--exclude='*.txt' 表示排除所有以.txt结尾的文件。

解释一下这个命令:

  • -a 表示归档模式,保留文件的符号链接、权限、时间戳、所有者、组等属性。
  • -v 表示详细模式,输出详细的同步信息。
  • --include='*/' 表示包括所有目录,因为rsync默认不包括空目录。
  • --exclude='*.txt' 表示排除所有以.txt结尾的文件。

请注意,--include--exclude选项的顺序很重要。rsync将按照指定的顺序应用这些过滤器。因此,在这个例子中,我们首先包括所有目录,然后排除.txt文件。

如果您想同步某些特定类型的文件,您可以添加更多的--include参数,如下所示:

rsync -av --include='*/' --include='*.jpg' --include='*.png' --exclude='*' source_directory/ destination_directory/

这个命令将只同步.jpg.png文件,而排除其他所有文件。注意最后的--exclude='*'用于排除所有未明确包括的文件类型。

请确保在实际运行rsync命令之前测试您的过滤规则,以确保它们按照您期望的方式工作。