本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告

rsync+inotify实现数据实时同步

发布:TangLu2017-8-23 9:55分类: Web服务 标签: rsync inotify

如果使用rsync+crontab计划任务只能做到分钟级的数据同步,因为crontab没办法实现秒级计划任务。为了解决这个问题可以用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是程序所包含的其他文件目录

inotify1.jpg

3、在使用中只需要掌握bin目录下的2个工具就可以了:inotifywait和inotifywatch,其中inotifywait用于监控文件的变化,inotifywatch统计文件系统访问次数。所以我们这里主要使用的就是inotifywait了

inotifywait常用选项解释:

inotify2.jpg

--exclude <pattern>:排除指定的文件或目录
--excludei <pattern>:排除文件或目录时,不区分大小写
-m | --monitor:始终保持事件监听状态   
-r | --recursive:递归查询目录
-d:后台运行
--fromfile <file>
-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命令示例1:

inotifywait  -mrq  -e  create -delete  /backup
执行这条命令后,因为加了-m选项,会持续进行监听,如果在/backup目录里建立或删除文件,都会实时更新出信息来,如下图:


inotify3.jpg

inotifywait命令示例2:

inotifywait  -mrq  --timefmt  '%d/%m/%Y %H/%M'  --format '%T %w%f'  -e  create /backup
相比示例1,加上了时间格式参数,输出的信息更直观,如下图:


 inotify4.jpg

2、利用脚本实现inotify+rsync实时同步

写一个脚本(如/shell/back.sh),目的是实时检测客户端的数据并推送到备份服务器上(因为是测试所以没用任何变量),脚本做好后执行nohup    ./shell/back.sh &放后台运行即可

inotify+rsync.jpg

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《rsync+inotify实现数据实时同步
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-169.html  [生成短网址]

已有 0/2013 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~