什么是sersync
提到数据同步就必然会谈到rsync
,一般简单的服务器数据传输会使用ftp/sftp
等方式,但是这样的方式效率不高,不支持差异化增量同步也不支持实时传输。针对数据实时同步需求大多数人会选择rsync+inotify-tools
的解决方案,但是这样的方案也存在一些缺陷(文章中会具体指出),sersync
是国人基于前两者开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源。
(阅读原文http://wsgzao.github.io/post/sersync/)
Sersync优点
1、 sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤,所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
2、 sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。
3、 相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
4、 本项目自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。
sersync安装及配置
准备环境
1、 关闭SElinux和防火墙。
2、 sersync软件也是基于rsync服务实现的,所以先部署rsync服务端的守护进程,实现rsync客户端向服务端成功推送文件。(参考前文)
3、 从sersync官网下载软件包 wget https://codeload.github.com/wsgzao/sersync/zip/master
安装部署
1、 解压软件包
[root@nfs01 tools]# unzip sersync-master.zip&&cd sersync-master [root@nfs01 sersync-master]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz [root@nfs01 sersync-master]# mv GNU-Linux-x86/* /usr/local/sersync
2、 修改配置文件
[root@nfs01 sersync-master]# vim /usr/local/sersync/confxml.xml ##过滤文件功能 6 <filter start="false"> 7 <exclude expression="(.*)\.svn"></exclude> 8 <exclude expression="(.*)\.gz"></exclude> 9 <exclude expression="^info/*"></exclude> 10 <exclude expression="^static/*"></exclude> 11 </filter> ##指定监控事件 12 <inotify> 13 <delete start="true"/> 14 <createFolder start="true"/> 15 <createFile start="false"/> 16 <closeWrite start="true"/> 17 <moveFrom start="true"/> 18 <moveTo start="true"/> 19 <attrib start="false"/> 20 <modify start="false"/> 21 </inotify> ##配置rsync服务,参考服务端信息填写 23 <sersync> 24 <localpath watch="/data"> #监控本地目录 25 <remote ip="172.16.1.41" name="nfs"/> #服务端ip和模块名 26 <!--<remote ip="192.168.8.39" name="tongbu"/>--> 27 <!--<remote ip="192.168.8.40" name="tongbu"/>--> 28 </localpath> 29 <rsync> 30 <commonParams params="-az"/> #rsync命令参数 -az 31 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/> #认证用户及密码文件 32 <userDefinedPort start="false" port="874"/><!-- port=874 --> #服务端口 33 <timeout start="false" time="100"/><!-- timeout=100 --> 34 <ssh start="false"/> 35 </rsync>
3、 启动sersync服务
[root@nfs01 bin]# ./sersync -h 参数-d:启用守护进程模式 参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍 参数-n: 指定开启守护线程的数量,默认为10个 参数-o:指定配置文件,默认使用confxml.xml文件 [root@nfs01 bin]#/usr/local/sersync/sersync -dro /usr/local/sersync/confxml.xml
4、 测试
客户端:
[root@nfs01 data]# touch {01..10} [root@nfs01 data]# ls 01 02 03 04 05 06 07 08 09 10
服务端:
[root@backup nfs]# ls 01 02 03 04 05 06 07 08 09 10
至此,sersync+rsync实现了数据的实时同步功能