1、sersync是基于Inotify开发的,类似于Inotify-tools的工具
2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录。
Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别?
1、Rsync+Inotify-tools
(1):Inotify-tools只能记录下被监听的目录发生了变化(包括增加、删除、修改),并没有把具体是哪个文件或者哪个目录发生了变化记录下来;
(2):rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此,效率很低。
2、Rsync+sersync
(1):sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字;
(2):rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。
小结:当同步的目录数据量不大时,建议使用Rsync+Inotify-tools;当数据量很大(几百G甚至1T以上)、文件很多时,建议使用Rsync+sersync。
下载
tar zxvf sersync2.5.4_64bit_binary_stable_final.tar
mv GUN-linux x86 /usr/local/sersync
cd /usr/local/sersync #进入sersync安装目录
cp confxml.xml confxml.xml-bak #备份原文件
vi confxml.xml #编辑,修改下面的代码
<localpath watch=" 本地目录">
<remote ip=" 目的IP" name=" 模块名字"/>
<commonParams params="-artuz"/>
<auth start="true" users="用户名" passwordfile=" 密码文件"/>
<crontab start="true" schedule="600"><!--600mins--> #设置为true,每隔600分钟执行一次全盘同步
设置sersync监控开机自动执行
vi /etc/rc.d/rc.local #编辑,在最后添加一行
/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml #设置开机自动运行脚本
:wq! #保存退出
同步
cd /usr/local/sersync
./sersync2 –r
脚本
vi /home/sh/sersync.sh
#!/bin/sh
sersync="/usr/local/sersync/sersync2"
confxml="/usr/local/sersync/confxml.xml"
status=$(ps aux |grep ‘sersync2‘|grep -v ‘grep‘|wc -l)
if [ $status -eq 0 ];
then
$sersync -d -r -o $confxml &
else
exit 0;
fi
:wq #保存脚本
chmod +x /home/sh/sersync.sh
vi /etc/crontab #编辑,在最后添加下面一行
*/5 * * * * root /home/sh/sersync.sh > /dev/null 2>&1 #每隔5分钟执行一次脚本
service crond reload #重新加载服务
在主服务器上开启sersync守护进程,使sersync在后台运行,开启实时同步。
./sersync -d
在开启实时监控的之前对主服务器目录与远程目标机目录进行一次整体同步
./sersync -r
指定配置文件
./sersync -o XXXX.xml