Inotify + Rsync 快速实现 '小剂量' 实时同步
0x01 利用 intify 做实时同步,实现如下适合文件并发较少文件较小的备份场景中,一般并发范围在200-300个小文件,延迟基本是很小的,如果超过这个量就比较吃力了
:1
要备份的目录 + inotify -> inotify会一直监控该目录的变化,只要所监控的目录一有变化,就把新生成的文件或者目录自动推到备份服务器上
0x02 准备好环境:1
2RsyncServer 一台已经事先配置好的Rsync服务器
RsyncClient26 再准备一台已经事先配置好的Rsync客户端,因为等会儿就在这台机器上安装inotify,也就是说,只要监控到客户端一有数据更新,就自动往服务端推
0x03 开始在rsync客户端上编译安装 inotiy:1
# ls -l /proc/sys/fs/inotify/ 首先,查看当前内核是否支持,如果出现以下三个文件则表示支持
1 | # wget https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz |
1 | inotifywatch 做事件统计用 |
监控指定目录下的各类增删改事件1
# ./inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,close_write,delete /bakdata/ 同时监控指定目录的增删改事件
0x04 最后,再在Rsync客户端上利用下面的小脚本即可帮助我们实现自动往Rsync服务端同步的效果:1
# vi inotify.sh
1 | #!/bin/bash |
1 | # sh -x inotify.sh 简单调试 |
0x05 如果实际并发较大,可以适当的把inotify简单优化下:1
2
3# ls -l /proc/sys/fs/inotify/
# echo "50000000" > /proc/sys/fs/inotify/max_user_watches 加大单进程最大的文件监视数量
# echo "50000000" > /proc/sys/fs/inotify/max_queued_events 加大队列可容纳的事件数量
小结:
对于要同时同步大量小文件来讲,inotify可能确实有些吃力,后续我们会再说明另一种解决方案,基于lsyncd + rsync
实现的实时同步,待续…