Linux_295_Sersync工具介绍
2022-11-01 本文已影响0人
为宇绸缪
ftp:效率低,不支持差异化,实时同步
实时数据同步:rsync + inotify-tools
sersync:还能实现文件过滤,事件过滤配置文件简化等功能
Sersync特点
- 使用C++编写,支持对监控事件的过滤
- Sersync采用xml配置文件,由守护进程启动,配置起来比起简易的
inotify+rsync更简单
- 使用多线程复制,可以并发复制多个不同文件,效率更高
- Sersync自带异常检测机制,可以通过
失败队列
对出错的文件重新复制 - 自带crontab功能,实现对
失败队列
中的文件定时整体复制 - 自带socket和HTTP协议扩展,定制特殊需求,二次开发
Sersync软件架构原理
截屏2022-11-01 下午8.24.10.png
上图执行原理解释
- Inotify监控指定目录对应事件的变化,当有事件变化时进入事件过滤队列
- 过滤队列负责过滤掉不需要触发复制的数据,也可以过滤短时间内产生的重复Inotify事件信息,过滤后的事件触发Rsync对应变化数据进行复制。
- 图中线程组(线程是等待线程队列的守护线程),当事件队列中中有事件发生后,线程组守护线程会逐个唤醒复制线程(线程就是干活的工人,没活的时候打盹,来活了逐个唤醒准备干活),当队列的Inotify事件较多的时候,复制线程就会全部唤醒一起工作,提升复制效率。(活太多,所有工人全部喊起来,加快工作效率)
- 除了线程组以外,还有Sersync服务线程负责处理
复制失败的文件
,它们再次复制,对于再次复制失败的文件(执行失败的命令),会记录到rsync_fail_log.sh脚本中,然后再定期执行脚本,同时利用自带的cron功能,实现每隔一段时间将所有未复制的数据整体复制。