rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。所以通常可以作为备份工具来使用。

运行Rsync server的机器也叫backup server,一个Rsync server可同时备份多个client的数据;也可以多个Rsync server备份一个client的数据。Rsync可以搭配ssh甚至使用daemon模式。Rsync server会打开一个873的服务通道(port),等待对方rsync连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

实验环境:两台CentOS7

                 原服务器地址:192.168.159.128

                 发起端地址:192.168.159.129

1因为CentOS7中已经安装了rsync包,所以直接可以进入它的主配置文件进行配置,它的主配置文件为/etc/rsyncd.conf,在这个文件中我们需要开启它的管理用户,基本组,进程文件,端口号,日志文件和监听地址,同时在下面规定它的管理模块,在管理模块下需要添加测试文件路径,测试用户,密码文件,可读权限

2主配置文件设置好之后关闭源服务器的防火墙

3接着安装源服务器的网站服务

4网站服务装好后我们需要创建它的密码文件,这里密码设为123456,密码文件创好之后为了安全考虑将权限设为600。接着开启rsync服务,开启之后便可以看到它的进程号

5密码文件创好后便可以在测试文件目录下创建一个测试目录,这里在/var/www/html目录下创建一个index.html的网站,到这里源服务器的服务基本设置完成

6源服务器设置完成后便可以设置发起端的服务,首先关闭发起端的防火墙

7接着在发起端安装网站服务,这里可以看到测试文件的权限为755,为了方便测试我们将权限设置为777,接着在发起端启动rsync服务,测试用户为jerry,地址为源服务器的地址,服务开启后可以看到html目录下同步了一个index.html的文件。


8为了避免每一次同步都要输入密码的麻烦,这里我们可以设置免交互,首先可以创建一个密码文件,直接将密码写入其中,接着用上图的命令执行免交互。

9最后我们需要在发起端安装自动同步,首先需要安装gcc gcc-c++的环境,接着需要更改sysctl.conf这个文件

10接着在文件中添加三条语句扩大队列的数量,使用sysctl -p 使文件生效

11接着将inotify软件包挂载,挂载完成后将这个软件包解压到opt目录下

12接着在opt目录下找到inotify的执行文件,执行该文件

13现在就可以对这台客户机发起监听,监听之后便不可以再输入内容,这时可以打开另一个终端使用

14接着可以创建一个运行脚本,只要执行这个脚本便可以自动监听和同步,脚本写好后运行这个脚本进行监听,这时我们还需要另开一起终端


15要想运行这个服务需要注意一个重要问题,权限问题,这里我们首先关闭该文件的只读权限,接着重新开启该命令,注意这里要关闭该命令的话首先要用kill命令关闭它的进程号,接着删除它的进程目录,这样才可以彻底关闭

16除了要关闭只读权限还需要保证源服务器的测试目录和发起端的测试目录权限一样大,这里我都设为最大权限

17最后权限设置完成后再发起端的测试目录下创建两个目录,可以看到,源服务器同步成功时,监听终端会出现同步信息,这是表示自动同步成功。