在 Linux 上使用 rsync 时过滤复制的文件

linuxopen sourceoperating system更新于 2026/1/25 20:22:17

简介

Linux 命令行实用程序 rsync 是一款功能强大且灵活的工具,可用于跨不同计算机和位置同步文件和目录。它常用于各种任务,包括备份、文件传输和数据复制。rsync 的主要功能之一是能够根据各种条件(例如文件类型、大小和修改时间)过滤文件。在本文中,我们将详细探讨如何在 Linux 系统上使用 rsync 过滤器在目录同步期间选择性地复制文件。

Rsync 概述

Rsync 是一款功能强大且高效的文件传输工具,允许用户跨不同系统同步文件和目录。它的工作原理是比较源目录和目标目录,并仅复制已更改或添加到源目录的文件。此功能使 rsync 成为通过网络传输大量数据的理想工具,因为它可以最大限度地减少需要传输的数据量。此外,rsync 还可用于删除源目录中不再存在的文件,使其成为一款在多个系统之间维护文件一致性的多功能工具。

使用 Include 选项

rsync 最强大的功能之一是能够根据各种条件(例如文件类型、大小和修改时间)过滤文件。Include 选项是一个强大的工具,它允许用户选择性地复制特定类型的文件。Include 选项与 Exclude 选项配合使用,Exclude 选项用于根据特定条件排除文件。

例如,假设您只想传输当前目录中的文本文件。我们将使用 include 选项来过滤要传输的文件,并使用带通配符的 exclude 选项来排除所有其他文件 -

$ rsync --include=*.txt --exclude=* /source/* /destination/

在此示例中,选项的顺序很重要。include 和 exclude 选项是过滤器,并按照指定的顺序应用。因此,首先我们必须使用代表要传输的文件的过滤器,然后排除所有其他文件。运行此命令时,将选择源目录中的所有文本文件进行传输,并排除所有其他文件。

我们还可以使用多个 include 选项来传输多种文件类型。例如,如果我们要传输文本和日志文件,可以对每个文件使用 include 选项,然后使用 exclude 选项 -

$ rsync --include=*.txt --include=*.log --exclude=* /source/* /destination/

递归遍历子目录

在某些情况下,我们可能希望传输源目录所有子目录中符合特定条件的文件。为此,我们可以使用 -a 和 -r 选项来遍历子目录。例如,要传输源目录所有子目录中的所有文本文件,我们可以使用以下命令 -

$ rsync -ar --include=*/ --include=*.txt --exclude=* /source/* /destination/

但是,此命令可能会复制所有子目录(不复制任何文件),因此我们还需要使用 --prune-empty-dirs 或 -m 选项来防止这种情况发生 -

$ rsync -ar --prune-empty-dirs --include=*/ --include=*.txt --exclude=* /source/* /destination/

高级过滤

Rsync 提供了几个高级过滤选项,可用于根据更复杂的条件过滤文件。这些功能包括根据文件大小、修改时间和文件属性进行过滤。

例如,以下命令将"/source/"目录中所有大于 100 MB 的文件同步到"/destination/"目录 -

$ rsync -av --size-gt 100M /source/ /destination/

再举一个例子,以下命令将"/source/"目录中过去 30 天内更改的所有文件同步到"/destination/"目录 -

$ rsync -av --ignore-existing --modify-window=30 /source/ /destination/

版本和变体

需要注意的是,rsync 命令的行为和语法可能因版本而异。本教程基于 3.2.4 版本。最新版本的 rsync 可在官方网站上获取 -

https://rsync.samba.org。请务必查阅您正在使用的特定版本的文档,以确保本教程中使用的命令和选项能够按预期工作。

结论

Rsync 是一款功能强大且用途广泛的工具,用于在 Linux 系统上同步文件和目录。它能够根据各种条件(例如文件类型、大小和修改时间)过滤文件,这使其成为执行各种任务(包括备份、文件传输和文件复制)的实用工具。特别是 include 选项,它是一款功能强大的工具,允许用户选择性地复制特定类型的文件,这使其成为跨多个系统管理和维护文件一致性的宝贵工具。正确使用 include 和 exclude 选项,结合显示子目录的功能和高级过滤选项,rsync 可以成为任何 Linux 系统管理员工具包中必不可少的工具。


相关文章


有用资源