inotify实时无差异同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了inotify实时无差异同步相关的知识,希望对你有一定的参考价值。

Inotify简介

     Inotify是一种强大的、细粒度、异步的文件系统时间监测事件,linux内核从2.6.1

3起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施这样监控软件。Inotify实际是一种事件驱动机制,它为应用程序监控文件系统事件提供了实时响应事件的响应,也没有轮询造成的系统资源消耗,是非常自然的时间通知接口,也与自然世界的时间机制相符合。

  Inotify实际是一种时间驱动机制,它为应用程序监控文件系统事件提供了实时响应事件的机制,而无须通过诸如cron等的伦旭机制来获取事件。Cron等机制不仅无法做到实时性,而且消耗大量系统资源,相比之下,inotify基于事件驱动,可以做到对应事件处理的实时响应,也没有轮询造成的系统资源消耗,是非常自然的事件通知接口,也与自然世界的事件机制相符合。

安装inotify

要监控nfsserver下的目录变化,所以inotify要安装在客户端

1)、查看当前系统是否支持inotify

#uname -r

2.6.32-504.el6.x86_64

[[email protected] /]# ls -l /proc/sys/fs/inotify/

total 0

-rw-r--r-- 1 root root 0 Feb  3 17:12 max_queued_events

-rw-r--r-- 1 root root 0 Feb  3 17:12 max_user_instances

-rw-r--r-- 1 root root 0 Feb  3 17:12 max_user_watches

出现这三项表示支持

2)、下载源码包

 #mkdir -p /home/yankefei/tools 

#cd /home/yankefei/tools/

  # wget  http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

源码安装第一步,解压

#tar zxf inotify-tools-3.14.tar.gz

切到目录,--prefix表示安装目录

[[email protected] ~]# cd /home/yankefei/tools/

[[email protected] tools]# ls

inotify-tools-3.14  inotify-tools-3.14.tar.gz

[[email protected] tools]# cd inotify-tools-3.14

[[email protected] inotify-tools-3.14]# ./configure --prefix /usr/local/inotify-tools-3.14

 

[[email protected] inotify-tools-3.14]# make && make install

创建软连接,访问更方便把版本号去掉

#ln s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools

[[email protected] inotify-tools]# ls -l /usr/local/inotify-tools/

total 16

drwxr-xr-x 2 root root 4096 Feb  3 18:02 bin

drwxr-xr-x 3 root root 4096 Feb  3 18:02 include

drwxr-xr-x 2 root root 4096 Feb  3 18:02 lib

drwxr-xr-x 4rootr oot 4096 Feb  3 18:02share

Bin目录下两个工具:

   一共安装了2个工具命令,即inotifywait和inotifywatch

  Inotifywait:在被监控的文件或目录上等待特定文件系统事件(open、close、delete等发生)执行后处于阻塞状态,适合在shell脚本中使用。

  Inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数统计。

Inotify命令常用参数详解

#./bin/inotifywait --help

参数:

 -r|--recursive  watch directories recursively   递归查询目录

 -q|--quiet  print less(only print events) 打印很少的信息,仅仅打印监控事件信息

 -m|--monitor  keep listening for events forever,without this option,inotifywait will exit after one event isreceived #始终保持事件监听状态

-excludei<pattern>  like exclude but case insensitive#排除文件或目录时,不区分大小写。

--timefmt<fmt>strftime-compatible-compatible format string for use with %T in format string,指定时间输出的格式。

--format<fmt> print using a specified format string ;read the man page for more

…………..

 

监控/data 目录的创建,修改,删除

#/usr/local/inotify-tools/bin/inotifywait mrq timefmt %d/%m%y %H:%M format %T %w%f e create,close_write,delete /data

实现数据同步企业案列脚本,监控到目录的变化,然后同步

[[email protected] data]# mkdir -p /server/scripts

[[email protected] data]# cd /server/scripts

[[email protected] scripts]# vim inotify.sh

 

#!/bin/bash

inotify=/usr/local/inotify-tools/bin/inotifywait

$inotify -mrq --format '%w%f' -e create,close_write,delete /data \

|while read file

do

  cd / &&

    rsync -az ./data --delete [email protected]::backup/ \

   --password-file=/etc/rsync.password

Done

网站这样的两个服务器最好实时同步的无差异同步但也非必须,脚本指出inotify命令的路径,然后inotify监控/data目录,然后通过管道把结果给后面的循环。把整个的data目录推送过去。在做无差异同步时必须注意,把服务端同步的目录里的其他内容删掉,这里是个危险,将被同步的目录和本本机器的任务目录分开。注释&&切换成功之后做推送命令

调试shell

#sh x inotify.sh

[[email protected] scripts]# sh -x inotify.sh

+ inotify=/usr/local/inotify-tools/bin/inotifywait

+ read file

+ /usr/local/inotify-tools/bin/inotifywait -mrq --format %w%f -e create,close_write,delete /data

+ cd /

+ rsync -az ./data/ --delete [email protected]::backup --password-file=/etc/rsync.password

+ read file

+ cd /

+ rsync -az ./data/ --delete [email protected]::backup --password-file=/etc/rsync.password

+ read file

调试成功之后将它全路径放在后台,为了开机下次启动,将它放在rc.local

[[email protected] scripts]# /bin/sh /server/scripts/inotify.sh  &

[1] 5498

[[email protected] scripts]# vi rc.local

创建3000个文件

  For n in `seq 3000`;do touch yan$n;done

#ls|wc -l


以上是关于inotify实时无差异同步的主要内容,如果未能解决你的问题,请参考以下文章

[转帖]sersync基于rsync+inotify实现数据实时同步

inotify+rsync实时备份总结

rsync+inotify实时数据同步

rsync+inotify实现数据实时同步

配置 inotify+rsync 实时同步

rsync+inotify-tools实时同步