注:有幸得到 Sersync 开发者之一的周洋同学的指点,Sersync的配置文件*.xml 每个xml只能配置一个模块,如果要同时同步多个模块,需要配置多个xml,启动多个线程;
相对系统自带的rsync,Sersync的同步实现方式更佳快捷,rsync一般是通过计划任务来定期执行,而sersync则是有文件发生改变立即触发同步机制。
个人认为sersync适合小文件(1M内)内网间的同步,否则当文件大量更新的时候,机子的负载会很高。
Sersync的原理:
使用 linux 2.6 内核的 inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常高。
采用的是inotify内核文件监听机制。
inotify,从kernel 2.6.13开始正式并入内核,RHEL5支持。
手动安装inotify-tools
inotify-tools-3.14.tar.gz
所以如果你的内核在kernel 2.6.13之后的,只要下载个Sersync的安装包即可。
sersync是在rsync的基础上来开发的,服务是从本地文件推送到客户机,所以客户机需要开启rsync服务,且在rsyncd.conf中的read only 必须设置为no,配置方法请参看另一篇文章:http://www.jb200.com/article/2631.html
开始:
安装过程很简单 下载 安装包 解压就能用了。官网:http://code.google.com/p/sersync/
只有两个文件 confxml.xml 、sersync2 一个配置文件,一个执行文件。sersync是从服务端推文件送到远程客户机的。
修改配置文件
vim confxml.xml 找到下面几项
如果有多个客户端需要同步(注意,是同一个模块推送到多台,不同模块只能多配置一个xml),增加一个remote 如:
执行 ./sersync2 -r -d -n 12 -o /root/GNU-Linux-x86/confxml.xml
//-r -d 对本地到远程整体同步一遍后,在后台运行实时同步
//-o参数指定其它配置文件, -n 指定线程总数(默认10)
如果没有出错提示就表示启动ok 。
查看进程
具体可以查看官网说明http://code.google.com/p/sersync/
原文链接:http://blog.163.com/a12333a_li/
作者:李坤山