sersync利用inotify与rsync对服务器进行实时同步,其中inotify用于监控文件系统事件,rsync是目前广泛使用的同步算法,其优点是只对文件不同的部分进行操作,所以其优势大大超过使用挂接文件系统的方式进行镜像同步。由金山的周洋开发完成,是目前使用较多的文件同步工具之一。该工具和其他的工具相比有如下优点:
sersync是使用c++编写,由于只同步发生更改的文件,因此比其他同步工具更节约时间、带宽;
安装方便、配置简单;
使用多线程进行同步,能够保证多个服务器实时保持同步状态;
自带出错处理机制,通过失败队列对出错的文件重新出错,如果仍旧失败,则每10个小时对同步失败的文件重新同步;
自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次;
自带socket与http协议扩展,你可以方便的进行二次开发;
数据从192.168.10.180同步到192.168.10.175
客户端:192.168.10.175
安装rsync
yum -y install rsync
cat /etc/rsyncd.conf
pid file =/var/run/rsyncd.pid lock file =/var/run/rsync.lock log file =/var/log/rsyncd.log uid = nobody gid = nobody use chroot = no [data] path =/data ignore errors = no read only = no write only = no uid = root gid = root auth users = root secrets file = /etc/rsync.password
[[email protected] data]# cat /etc/rsync.password
root:123456
启动rsync:/usr/bin/rsync --daemon
服务端:192.168.10.180
安装rsync
yum -y install rsync
新建/etc/rsync.password 文件
[[email protected] data]# cat /etc/rsync.password 123456
安装sersync
wget https://sersync.googlecode.com/files/sersync2.5_64bit_binary_stable_final.tar.gz tar -zxvf sersync2.5_64bit_binary_stable_final.tar.gz mkdir /usr/local/sersync/ mv GNU-Linux-x86/* /usr/local/sersync/
vim confxml.xml
<sersync> <localpath watch="/data"> #设置监控目录,有文件改动就会同步。在服务端 <remote ip="192.168.10.175" name="data"/> #客户端IP及模块名 </localpath> <rsync> <commonParams params="-artuz"/> <auth start="true" users="root" passwordfile="/etc/rsync.password"/> #启动验证,填写验证的用户名及密码存放文件 <userDefinedPort start="false" port="874"/><!-- port=874 --> <timeout start="false" time="100"/><!-- timeout=100 --> <ssh start="false"/> </rsync>
#在confxml.xml是默认的配置文件,只需修改上面有注释的三行。上面只是配置文件中的一部分。
vim /etc/init.d/sersync #sersync启动脚本
#! /bin/bash #chkconfig: 35 10 90 #description: 监控目标目录[事件触发]同步到备份机 # . /etc/rc.d/init.d/functions case "$1" in start) cd /usr/local/sersync ./sersync2 -r -d if [ $? -eq 0 ] then echo -e "Staring sersyncd [ OK ]" exit 0 fi ;; stop) kill `ps aux | grep sersync2 | grep -v grep | awk ‘{print $2}‘` if [ $? -eq 0 ] then echo -e "Stopping sersyncd [ OK ]" exit 0 fi ;; status) ps aux | grep sersync2 | grep -v grep ;; esac
启动sersync
[[email protected] sersync]# /etc/init.d/sersync start
set the system param execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events parse the command param option: -r rsync all the local files to the remote servers before the sersync work option: -d run as a daemon daemon thread num: 10 parse xml config file host ip : localhosthost port: 8008 daemon start,sersync run behind the console use rsync password-file : user isroot passwordfile is /etc/rsync.password config xml parse success please set /etc/rsyncd.conf max connections=0 Manually sersync working thread 12 = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads) Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads) please according your cpu ,use -n param to adjust the cpu rate ------------------------------------------ rsync the directory recursivly to the remote servers once working please wait... execute command: cd /data && rsync -artuz -R --delete ./ [email protected]::data --password-file=/etc/rsync.password >/dev/null 2>&1 run the sersync: watch path is: /data Staring sersyncd [ OK ]
sersync参数介绍
[[email protected] sersync]# ./sersync2 -help
set the system param execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events parse the command param _______________________________________________________ 参数-d:启用守护进程模式 参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍 c参数-n: 指定开启守护线程的数量,默认为10个 参数-o:指定配置文件,默认使用confxml.xml文件 参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块 参数-m:单独启用其他模块,使用 -m socket 开启socket模块 参数-m:单独启用其他模块,使用 -m http 开启http模块 不加-m参数,则默认执行同步程序 ________________________________________________________________