单向同步的可参考本文作者另一篇文章:https://www.cnblogs.com/mrtop/p/12396775.html
本文讲解的是通过rsync+inotify实现*双*向*同*步*。
根据上一篇文章中搭建与配置(本篇也是接续上一篇的配置,参考:https://www.cnblogs.com/mrtop/p/12396775.html),实现1对2的单向同步,已经实现192.168.88.89和192.168.88.90可同步192.168.88.88的/root/rsync/test目录下所有文件。
接下来我们将实现192.168.88.88的/root/rsync/test目录同步192.168.88.89的/root/rsync/backup89路径下所有文件,即实现双向同步。
结构图如下:
步骤1、192.168.88.89配置
此时192.168.88.89服务器应该是被同步的,相当于源服务器,所以需要配置shell脚本通过inotify监控文件事件变化,再触发rsync同步。
1,设置同步密码为rsync,别忘记将密码文件设置600权限
2,配置shell
步骤2、192.168.88.88配置
此时192.168.88.88服务器应该是同步的,相当于目标服务器,所以需要配置conf文件。
1,设置同步密码为rsync,别忘记将密码文件设置600权限
注意此时因为88服务器作为目标服务器密码应该加上源服务的认证用户名webuser
2,配置conf文件
步骤3、启动各自脚本
在192.168.88.89启动shell脚本监控文件事件变化
[root@localhost rsync]# sh /root/rsync/rsync1.sh &
在192.168.88.88启动conf文件,主动同步文件
[root@localhost test]# /usr/rsync/bin/rsync --daemon --config=/root/rsync/rsync1.conf
至此,双边的inotify+rsync都已开启实现双向同步。
Tips:双向与单向的配置区别在于
单项的同步实际的内部实现是在源服务器(被同步)开启inotify监控某个目录下文件的增加和修改删除等,然后通过rsync配置发起challenge–response authentication会话,找到配置中的ip所对应的认证信息,开始认证,即.sh的shell文件;而目标服务器(同步)会马上响应challenge–response authentication会话,将在自己的conf文件中找到对应的模块去回应比对认证消息,认证通过则同步。
双向同步的内部实现实际是既将自己作为源又将自己作为目标,即既配置shell脚本又配置conf文件,同时启动这两个文件。
**后记**
如果要实现多对多的同步,如3台服务器之间互相同步,那么各自的shell脚本只需要配置1个,.conf也只需配置1个,然后将host和各自模块名称、用户名、密码等等匹对正确即可,如下:
在这个.conf文件则需要设置多个module(文件中的中括号为module名,如[web] [web2]),配对好各自对应的module以及密码文件等即可实现多对多的同步。