跟老男孩学Linux运维:高性能Web集群实践(上)
上QQ阅读APP看书,第一时间看更新

第3章 Rsync数据复制软件应用实践

3.1 Rsync介绍

3.1.1 什么是Rsync

Rsync是一款开源的快速的、可实现全量及增量的本地或远程数据备份的多功能优秀工具。并且在复制时可以不改变原有数据的属性信息,即可实现数据的备份迁移特性。Rsync软件适用于Unix/Linux/Windows等多种操作系统平台。

Rsync提供了大量参数来控制复制行为的各个方面,并且允许多种灵活的方式来实现文件的传输复制。它以其delta-transfer算法闻名。通过减少网络数据发送数量,只发送源文件和目标文件之间的差异信息,从而实现数据的增量复制。

Rsync被广泛应用于数据备份和镜像,并作为一种改进后的复制命令用于日常系统中。

官方链接:http://www.samba.org/ftp/rsync/rsync.html

官方手册:man rsync/man rsync.conf

3.1.2 Rsync功能介绍

Rsync英文全称为Remote synchronization,从软件名称可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制、远程备份的功能,Rsync软件自带的rsync命令本身就可以实现异地主机复制数据,这个功能类似scp命令(借助SSH服务实现远程传输数据),但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝(同样需借助SSH服务传输数据),此外,Rsync软件还支持以配置守护进程方式实现异机数据复制。

除了远程复制传输数据外,Rsync还可以在本地主机的不同分区或目录之间全量及增量复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而Rsync还可以增量拷贝。

最后rsync命令还可以作为删除和查看命令被应用,在某种情况下类似于传统的rm和ls命令。

rsync命令可以实现的功能如下:

1)实现本地数据同步复制(本地工作模式,相当于cp命令)。

2)实现远程数据同步复制(远程Shell工作模式,相当于scp命令)。

3)实现数据信息删除功能(本地工作模式,相当于rm命令)。

4)实现数据信息查看功能(本地或远程工作模式,相当于ls命令)。

3.1.3 Rsync软件特性

Rsync的特性如下(7个特性信息说明):

❑ 支持拷贝普通文件与特殊文件,如链接文件、设备文件等。

❑ 支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。

❑ 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。

❑ 可实现增量复制,即只复制发生变化的数据,因此数据传输效率很高。

❑ 可以使用rcp、rsh、SSH等方式来配合进行隧道加密传输文件(Rsync本身不对数据加密)。

❑ 可以通过socket(进程方式)传输文件和数据(服务端和客户端)。

❑ 支持匿名或认证(无须系统用户)进程模式传输,安全地进行数据备份及镜像。

3.1.4 Rsync软件复制原理

默认情况下,在备份复制数据时,Rsync通过其独特的quick check算法,仅复制大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化复制,但需要指定相应的参数,甚至可以实现只复制一个文件里有变化的部分内容,所以可以实现快速地备份复制数据,即采用增量复制方法对数据信息进行复制,与传统cp、scp复制工具的全量复制截然不同,增量复制数据在效率上远远高于全量复制,图3-1所示为Rsync备份服务复制图。

图3-1 Rsync备份服务复制图

在CentOS5系统上,Rsync软件版本默认为2.x,同步增量复制数据原理是把所有的文件比对一遍,然后再进行数据同步。在CentOS6和CentOS7系统上,Rysnc软件版本默认为3.x,增量复制数据的原理是一边比对差异,一边对差异的数据部分进行复制。从增量复制数据的效率上而言,Rsync 3.x版本比Rsync 2.x更有优势一些。

可以利用rsync命令参数查看当前系统中Rsync软件版本信息。

        [root@backup ~]# rsync --version

如果读者还想了解底层的代码层算法原理(普通运维工程师不建议了解),可以参考https://coolshell.cn/articles/7425.html中的相关内容。