创建源到目标的镜像副本

默认情况下,rsync只确保将源目录中的所有文件(指定为例外的文件除外)复制到目标:它不负责保持两个目录相同,也不删除文件;因此,如果我们想创建源到目标的镜像副本,我们必须使用“---delete”选项,这将导致删除仅存在于目标内部的文件。
假设我们在目标目录中创建一个名为“file3.txt”的新文件:

$touch /run/media/egdoc/destination/file3.txt

源目录中的文件不存在,因此如果我们使用--delete选项运行rsync,则会删除:

$rsync -av --delete /mnt/data/source//run/media/egdoc/destination
sending incremental file list
deleting file3.txt
./
sent 95 bytes  received 28 bytes  246.00 bytes/sec
total size is 0  speedup is 0.00

由于这种同步具有潜在的破坏性,您可能希望首先使用“---dry run”选项启动rsync,以便使程序显示将要执行的操作,而不实际修改文件系统。

从同步中排除文件

有时我们希望从同步中排除一些文件或者目录。基本上有两种方法可以完成此任务:

直接用“---exclude”指定排除模式(可以通过重复该选项指定多个模式),或者将所有模式写入一个文件(每行一个)。
当使用后一种方法时,我们必须将文件路径作为参数传递给--exclude from选项。
所有与模式匹配的文件和目录都将从同步中排除。例如,要排除扩展名为“.txt”的所有文件,我们将运行:

$rsync -av /mnt/data/source//run/media/egdoc/destination --exclude=*.txt
如何使用Rsync进行本地和远程数据备份和同步

如何使用rsync来同步数据?

Rsync是一个非常有用的工具,它允许Linux系统管理员通过ssh协议或者使用“Rsync守护程序”在本地或者与远程文件系统同步数据。
使用“rsync”比简单地复制数据更方便,因为它只能发现并同步源和目标之间的差异。该程序具有保留标准和扩展文件系统权限、在传输期间压缩数据等选项。

假设我们的源目录是/mnt/data/source,目标目录是/run/media/egdoc/destination
目标目录有两个文件:file1.txtfile2.txt

$ls /run/media/egdoc/destination/-l
total 0
-rw-r--r--. 1 egdoc egdoc 0 Oct  6 19:42 file1.txt
-rw-r--r--. 1 egdoc egdoc 0 Oct  6 19:42 file2.txt

修改源目录中file1.txt的内容:

$echo onitroad > /mnt/data/source/file1.txt

运行rsync,查看输出:

$rsync -av /mnt/data/source/
/run/media/egdoc/destination
sending incremental file list
file1.txt
sent 159 bytes  received 35 bytes  388.00 bytes/sec
total size is 12  speedup is 0.06

只复制了file1.txt。

远程同步文件

直到现在,我们了解了如何使用rsync来同步两个本地文件系统。该程序还可以用于远程同步文件,使用远程shell,如rsh或者ssh,或者rsync守护进程。我们将探讨这两种方法。

通过ssh运行rsync

在本例中,我们仍将使用与前面示例中相同的源目录,但作为目的地,我们将使用IP为'192.168.122.32'的远程计算机上的目录。我之前在机器上设置了一个openssh服务器,该服务器使用基于密钥的登录,因此我不需要提供密码来访问它。
如何通过ssh运行rsync?首先,要使远程同步工作,必须在源计算机和远程计算机上安装rsync。只要目标路径或者源路径包含:字符,Rsync就会尝试使用远程shell程序联系远程文件系统。在rsync的现代版本中,默认使用'ssh';要使用另一个远程shell,或者显式声明shell,我们可以使用“-e”选项并将其作为参数提供。假设远程计算机上的目标目录为“/home/egdoc/destination”,我们可以运行:

$rsync -av -e ssh /mnt/data/source/egdoc@192.168.122.32:/home/egdoc/destination

请注意,我们以<user><@machine address>:/path/to/directory的格式指定了目标目录。

通过rsync守护进程联系远程计算机

我们可以用来与远程机器同步文件的另一种方法是使用“rsync守护程序”。这显然需要在目标计算机上安装并运行守护进程。每当源或者目标路径在主机规范后包含“::”(双冒号)分隔符,或者当Rsync url指定为“Rsync://”时,Rsync都会尝试与远程计算机联系,并与守护程序进行通信。
假设rsync守护进程正在侦听端口“873”(默认),在远程计算机上,我们可以通过运行以下命令与它联系:

$rsync -av /mnt/data/source/192.168.122.32::module/destination

或者,我们可以使用“rsync URL”:

$rsync -av /mnt/data/source/rsync://192.168.122.32/module/destination
日期:2020-07-07 20:56:38 来源:oir作者:oir