什么是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实现了数据的实时同步功能