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

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

介绍

Linux命令行工具rsync是一个强大而灵活的工具,用于在不同的计算机和地点同步文件和目录。它通常被用于各种任务,包括备份、文件传输和数据复制。rsync的主要特点之一是它能够根据各种标准过滤文件,如文件类型、大小和修改时间。在这篇文章中,我们将详细探讨如何在Linux系统的目录同步过程中使用rsync过滤器来选择性地复制文件。

Rsync概述

Rsync是一个强大而高效的文件传输工具,允许用户在不同的系统中同步文件和目录。它的工作原理是比较源目录和目标目录,只复制源目录中已经改变或增加的文件。这一功能使rsync成为在网络上传输大量数据的理想工具,因为它将需要传输的数据量降到最低。此外,rsync也可以用来删除源目录中不再存在的文件,这使得它成为保持多个系统中文件一致性的多功能工具。

使用包括选项

rsync最强大的功能之一是能够根据各种标准来过滤文件,如文件类型、大小和修改时间。包含选项是一个强大的工具,允许用户有选择地只复制某些类型的文件。包含选项与排除选项一起工作,后者用于根据特定的标准排除文件。

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

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

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

我们还可以使用多个包括选项来传输多种文件类型。例如,如果我们想传输文本和日志文件,我们可以为每个文件使用一个包括选项,然后再使用排除选项——。

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

通过子目录复查

在某些情况下,我们可能想在源目录的所有子目录中传输符合特定条件的文件。要做到这一点,我们可以使用-a和-r选项来遍历子目录。例如,要转移源目录下所有子目录中的所有文本文件,我们可以使用以下命令-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/”目录下所有大于100MB的文件同步到”/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和exclude选项,结合调出子目录的能力和高级过滤选项,rsync可以成为任何Linux系统管理员工具包中的一个重要工具。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Linux 基础