Sersync项目利用inotify和rsync工具技术实现对服务器数据实时复制
当事件发生变化后,利用rsync命令把变化的数据复制到远端服务器上
sersync特点:
- 使用C++编写,支持对监控事件的过滤
- sersync采用xml配置文件,由守护进程启动,配置起来比起建议的inotify + rsync更简单
- 使用多线程复制,可以并发复制多个不同文件,效率更高
- sersync自带一场检测机制,可以通过失败队列对出错的文件重新复制
- 自带crontab功能,实现对失败队列中的文件定时整理复制
- 自带socket和HTTP协议扩展,定制特殊需求,二次开发
sersync软件架构原理

- inotify监控指定目录对应事件的变化,当有事件变化进入事件过滤队列
- 过滤队列负责过滤掉不需要触发复制的数据,也可以过滤短时间内产生的重复inotify事件信息,过滤后的事件触发rsync对应变化数据进行复制
- 图中线程组(线程是等待线程队列的守护线程),当事件队列中有事件发生后,线程组守护线程会逐个唤醒复制线程,当队列的inotify事件较多的时候,复制线程就会全部唤醒一起工作,提升复制效率
除了线程组以外,还有sersync服务线程负责处理复制失败的文件,他们再次复制,对于再次复制失败的文件(执行失败的命令),会记录到rsync_fail_log.sh脚本中,然后再定期执行脚本,同时利用自带的cron功能,实现每隔一段时间将所有未复制的数据整体复制
sersync部署
环境准备
确保rsync服务端正常
具体含义看rsync笔记,确保两个服务器能够正常使用该命令即可
rsync -avzP —delete /sersync_test/ rsync_backup@192.168.47.131:backup
确保当前客户端机器,是否支持inotify机制
查看该目录,有如下三个文件即可
ls /proc/sys/fs/inotify/ max_queued_events max_user_instances max_user_watches
安装
获取代码包
这个网页还待确认,有空重新找一下
https://github.com/wsgzao/sersync
这里先利用已有的安装包,路飞第一章节下载的课件里有
解压
unzip sersync_installdir_64bit.zip
可以进入sersync可执行命令目录,对命令进行授权执行
chmod +x /MyInotify/tools/serrsync_installdir_64bit/sersync/bin/sersync
导入安装包
lrzsz命令
yum insatll lrzsz -y
需要的安装包在windows电脑,而利用linux虚拟机,如何将安装包保存到虚拟当中,这个时候我们可以利用lrzsz工具(linux与windows互传文件工具)
12-21行
指定时间监控,可以开关某些文件事件
24-28行
sersync重点配置,如rsync备份服务器的地址填写
填写rsync备份服务器的地址,以及模块名(备份服务器配置rsyncd.conf文件时里面的[模块名]),!—与注释同义
29-35行
修改rsync服务器验证的账号密码配置
sersync部署命令行
配置sersync命令环境变量
方式一:添加sersync的完整bin目录,加入到PATH中 方式二:把sersync命令,加一个快捷方式,放到PATH下 ln -s /MyInotify/tools/sersync_installdir_64bit/sersync/bin/sersync /usr/local/bin/
可以查看命令帮助参数
sersync -h 参数解释: -d:启用守护进程模式 -r:在监控前,将监控目录与远程主机用rsync命令推送一遍 -n:指定开启守护线程的数量,默认为10个 -o:指定配置文件,默认使用confxml.xml文件 -m:单独启用其他模块 -m refreshCDN 开启刷新CDN模块 -m socket 开启socket模块 -m http 开启http模块
开启sersync服务
sersync -r -d -o /MyInotify/tools/sersync_installdir_64bit/sersync/conf/confxml.xml
