【实用脚本】rsync+inotify实现数据实时同步
一、为什么要使用inotify
由于rsync+crontab只能实现按分钟来做计划任务,如果要实现数据有更新就进行实时推送就需要结合inotify。inotify的作用就是“当文件有发生改变就通知”,这样就可以结合脚本推送给rsync进行实时同步了。
二、安装inotify
1、inotify-tools可以通过EPEL的源进行安装或者下载源码包编译安装,编译过程很简单
./configure --prefix=/usr/local/inotify make&&make install
2、使用编译安装结束后在/usr/local/inotify可以看到生成了4个子目录,其中bin目录是inotify工具命令的存放目录,share是帮助文档目录,lib是动态链接库目录,include是程序所包含的其他文件目录
3、在使用中只需要掌握bin/inotifywait和bin/inotifywatch,其中inotifywait用于监控文件的变化,inotifywatch用于统计文件系统访问次数。
三、inotifywait常用选项
--exclude <pattern>:排除指定的文件或目录
--excludei <pattern>:排除文件或目录时,不区分大小写
-m | --monitor:始终保持事件监听状态
-r | --recursive:递归查询目录
-d:后台运行
-q | --quiet:只打印监控事件的信息
--format <fmt>:打印使用指定格式输出
--timefmt <fmt>:指定时间输出的格式
-e | --event <event1> [ -e|--event <event2> ... ]:指定需要监控的事件,具体事件如下:
access:监控文件或目录被访问的事件
modify:监控文件或目录被修改的事件
attrib:监控文件或目录属性被修改的事件
close:监控文件或目录被关闭的事件
close_write:监控文件或目录有写入的事件
open:监控文件或目录被打开的事件
moved_to:监控文件或目录从当前目录移走的事件
moved_from:监控文件或目录从其他目录移动过来的事件
create:监控文件或目录被创建的事件
delete:监控文件或目录被删除的事件
unmount:监控文件系统被卸载的事件
inotifywait命令示例:
inotifywait -mrq -e create -e -delete /backup执行这条命令后,因为加了-m选项会持续进行监听,如果在/backup目录里建立或删除文件,都会实时更新出信息来,如下图:
inotifywait命令示例:
inotifywait -mrq --timefmt '%d/%m/%Y %H/%M' --format '%T %w%f' -e create /backup #加上了时间格式参数,输出的信息更直观
利用脚本实现inotify+rsync实时同步
写一个脚本(如/shell/back.sh),目的是实时检测客户端的数据并推送到备份服务器上(因为是测试所以没用任何变量),脚本做好后执行nohup ./shell/back.sh &放后台运行即可
评论