文章目录
sersync特点:
自带socket与http协议扩展,可以满足公司的二次开发,多线程,失败处理机制,重传,增量,c++编写,能过滤掉系统产生的临时文件,自带crontab
当线程队列有事件产生的时候,线程组线程会唤醒rsync进行同步,若失败,则延时重传,再失败则写log
过滤事件:删除一个有5个文件的目录时,会产生6个事件,则会过滤掉删除5个文件的事件,只保留删除目录的事件
前提:先部署好rsync,确保手工能够同步,rsync设置见inotify+rsync那篇文章
上传sersync的二进制文件,解压并改名为sersync
tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local
cd /usr/local
mv GNU-Linux-x86 sersync
cd sersync
修改配置文件的localpath部分
vim confxml.xml
<localpath watch="/var/www/html">
<!--这是定义本地要同步的目录,若在一个配置文件中定义多个localpath,只有第一个才会生效,若是先监控多个目录,需要配置多实列-->
<remote ip="127.0.0.1" name="myftp"></remote>
<!--定义远程主机,和模块名(在rsyncd.conf里定义那个一样),整体意思是将本地的/var/www/html同步到远程的myftp模块下-->
</localpath>
修改配置文件的rsync认证部分
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="true" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
启动sersync守护进程,与多实列启动(注意多实列配置文件只需要localpath不同就好了)
/usr/local/sersync/sersync2 -r -d -o /usr/local/sersync/confxml.xml
/usr/local/sersync/sersync2 -r -d -o /usr/local/sersync/confxml1.xml
写入开机自启动时,不需要加-r参数
最后附上一个文件系统压力测试语句
for n in seq 100000 ; do echo ddd > $n.txt; done
注意:根据我的测试,inotify+rsync与sersync+rsync这两种方案,我觉得前者更稳定,cpu的占用更少,同步更快
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论