rsync 自动同步数据到Linux远程,使用Rsync进行本地和远程数据同步及备份

本文介绍了rsync工具在Linux系统管理中的应用,包括如何同步本地和远程文件系统,通过ssh远程同步,使用rsync守护进程以及如何排除文件。rsync的--delete选项用于创建源到目标的镜像副本,--exclude和--exclude-from则用于从同步中排除特定文件。此外,还展示了通过ssh和rsync守护进程连接远程计算机的两种方式。
摘要由CSDN通过智能技术生成

Rsync是一个非常有用的工具,它允许Linux系统管理员在本地或与远程文件系统同步数据。使用rsync比简单地复制数据更方便,因为它能够主动发现和同步源和目标之间的差异。该程序具有:保留标准和扩展文件系统权限、在传输过程中压缩数据等选项。我们将在本指南中看到最常用的一些功能。

在本教程中,您将学习到:

如何使用rsync同步数据

如何通过ssh在远程文件系统上使用rsync

如何通过rsync守护进程将rsync与远程文件系统一起使用

如何从同步中排除文件

d0c5c79e5c771a0f32026d74bbd31892.png

Rsync-用法介绍

让我们从rsync基本用法开始。假设我们在本地文件系统上有一个目录,并且我们想将其内容与另一个目录(可能在外部USB设备上)进行同步,以便创建文件的备份。在示例中,源目录为/mnt/data/source,目的地将挂载在/run/media/egdoc/destination。源包含两个文件:file1.txt和file2.txt,而目的地目录为空。第一次运行rsync时所有数据被复制。如果现在列出目标目录内容,则可以看到它现在包含源文件:

$ 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

随后,我们运行rsync来同步两个目录,仅复制新文件和修改过的文件:这将节省大量时间和资源。让我们验证一下:首先,我们在源目录中修改file1.txt的内容:

$ echo linuxconfig > /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只需确保将源目录中的所有文件(指定为例外的文件除外)都复制到了目的地:它不会使两个目录保持相同,也不会删除文件;因此,如果我们要创建源到目标的镜像副本,则必须使用--delete选项,这将删除仅在目标内部存在的文件。

假设我们创建一个名为file3.txt在目标目录中:

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

该文件在源目录中不存在,因此如果我们运行rsync--delete选项,将其删除:

$ 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同步两个本地文件系统。该程序还可以通过远程 shell (例如,rsh或者ssh)或者rsync守护程序远程同步文件。我们将探讨这两种方法。

通过SSH运行rsync

对于我们的示例,我们仍将使用与先前示例相同的源目录,但作为目标,我们将使用具有IP(192.168.122.32)的远程计算机上的目录。之前,我在计算机上设置了具有基于密钥登录名的openssh服务器,因此无需提供密码即可访问它。

我们如何通过ssh运行rsync?首先,要使远程同步生效,必须在源计算机和远程计算机上都安装rsync。在现代版本的rsync中默认情况下使用ssh;要使用另一个远程 shell 程序,或显式声明该 shell 程序,我们可以使用-e选项并以它作为参数。假设我们在远程机器上的目标目录是/home/egdoc/destination,我们可以运行:

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

请注意,我们指定了目的地@:/path/to/directory。

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

与远程计算机同步文件的另一种方法是使用rsync daemon(守护进程)。显然,这需要在目标计算机上安装并运行该守护程序。

假设rsync守护程序正在侦听端口873(默认),在远程计算机上,我们可以通过运行以下命令与它联系:

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

另外,我们可以使用rsync URL:

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

在两个示例中,home(在命令中突出显示),不代表远程计算机上的目录名称,而是资源的名称(在rsync术语中称为module),由管理员配置,并可以通过rsync守护程序进行访问。该module可以指向文件系统上的任何路径。

从同步中排除文件

有时我们想从同步中排除一些文件或目录。基本上有两种方法可以完成此任务:通过直接指定排除模式--exclude(可以通过重复该选项来指定多个模式),也可以将所有模式写入文件(每行一个)。使用后一种方法时,我们必须将文件路径作为参数传递给--exclude-from选项。

与该模式匹配的所有文件和目录都将从同步中排除。例如,要排除所有扩展名为".txt"的文件,我们将运行:

$ rsync -av /mnt/data/source/ /run/media/egdoc/destination --exclude=*.txt

结论

在本文中,我们介绍了rsync,这是一个非常有用的工具,可用于同步本地和远程文件系统上的文件和目录。我们学习了该程序最常用的选项,它能让我们完成了什么任务,如何指定源目录和目标目录,以及用来联系远程文件系统的方法。最后,我们了解了如何从同步中排除文件,如何直接或在文件中指定排除模式。

0fcc79734d0b66841fbcd733bf7976d4.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值