如何从Rsync排除文件

时间:2020-01-09 10:44:58  来源:igfitidea点击:

Rsync是服务器管理员最有用的实用程序之一,但是默认情况下它会同步所有内容,如果应用程序创建了很多临时文件,这可能会很烦人。这是使用rsync时如何排除文件的方法。

从文件列表中排除

这是排除文件和文件夹的理想方法,因为我们始终可以编辑列表并在必要时进行调整。语法如下:

rsync --exclude-from=/path/to/exclusion-file /path/to/source /path/to/dest

rsync的棘手之处在于,当我们尝试排除事物时,我们需要使用相对路径,因为当它尝试匹配排除项时,它将不会使用路径的第一部分进行匹配,这很奇怪。

举例来说,假设我们要备份/ data / web /并将其发送到另一台服务器,所以我们使用rsync -a / data / web / user @ server:/ backups / data / web /之类的命令来制作它发生这种情况,但是我们真的想跳过/ data / web / cache /文件夹的同步。当rsync去检查它同步的每个项目的排除列表时,它不会检查/ data / web / cache /,因为原始的rsync命令基于/ data / web /文件夹。它只会对照列表检查cache /。因此,我们需要将缓存放入列表中,而不是完整路径中。例:

rsync -a --exclude-from=/data/exclusions /data/web/ /backups/

现在,要使用此命令从rsync中排除/ data / web / cache和/ data / web / temp,我们将删除路径的/ data / web /部分,并且/ data / exclusions文件将仅包含以下内容:

cache*
temp*

我们会注意到,我在路径中添加了*,以确保它与开头以缓存开头的所有内容匹配。如果我们想说要排除所有.txt文件以使其不被同步,则可以出于更有用的原因使用此星形模式。我们将以星号开始模式以确保始终匹配,然后添加以下内容:

*.txt

这样可以确保在同步过程中跳过这些类型的文件。除此之外,这非常简单。

排除单个项目

该技术用处不大,但是我们可以根据需要即时使用它。如果要设置脚本来使用rsync(通常如此),则应多花一些时间从文件列表中排除,以使将来的维护更加容易。语法非常相似:

rsync --exclude=relative/path/to/exclusion /source /dest

相同的相对路径应与上述相同。