[root@nfs01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

[root@nfs01 ~]# yum install inotify-tools -y

[root@nfs01 ~]# rpm -qa inotify-tools 

inotify-tools-3.14-1.el6.x86_64

[root@nfs01 ~]# ll /proc/sys/fs/inotify/(查看该目录有下面三个文件代表系统支持inotify,Linux内核版本为2.6.13开始支持inotify)

总用量 0

-rw-r--r-- 1 root root 0 2015-11-12 18:21 max_queued_events

-rw-r--r-- 1 root root 0 2015-11-12 18:21 max_user_instances

-rw-r--r-- 1 root root 0 2015-11-12 18:21 max_user_watches

[root@nfs01 ~]# /usr/bin/inotifywait --help

inotifywait 3.14

Wait for a particular event on a file or set of files.

Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]

Options:

        -h|--help       Show this help text.

        @<file>         Exclude the specified file from being watched.

        --exclude <pattern>

                        Exclude all events on files matching the

                        extended regular expression <pattern>.

        --excludei <pattern>

                        Like --exclude but case insensitive.(排除文件或目录时,不区分大小写)

        -m|--monitor    Keep listening for events forever.  Without

                        this option, inotifywait will exit after one

                        event is received.(始终保持事件监听状态)

        -d|--daemon     Same as --monitor, except run in the background

                        logging events to a file specified by --outfile.

                        Implies --syslog.

        -r|--recursive  Watch directories recursively.(递归查询目录)

        --fromfile <file>

                        Read files to watch from <file> or `-' for stdin.

        -o|--outfile <file>

                        Print events to <file> rather than stdout.

        -s|--syslog     Send errors to syslog rather than stderr.

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

        -qq             Print nothing (not even events).

        --format <fmt>  Print using a specified printf-like format

                        string; read the man page for more details.(打印使用指定的输出类似格式字符串)

        --timefmt <fmt> strftime-compatible format string for use with

                        %T in --format string.(指定时间输出的格式)

        -c|--csv        Print events in CSV format.

        -t|--timeout <seconds>

                        When listening for a single event, time out after

                        waiting for an event for <seconds> seconds.

                        If <seconds> is 0, inotifywait will never time out.

        -e|--event <event1> [ -e|--event <event2> ... ]

                Listen for specific event(s).  If omitted, all events are 

                listened for.(通过此参数可以指定需要监控的事件)


Exit status:

        0  -  An event you asked to watch for was received.

        1  -  An event you did not ask to watch for was received

              (usually delete_self or unmount), or some error occurred.

        2  -  The --timeout option was given and no events occurred

              in the specified interval of time.


Events:

        access          file or directory contents were read(文件或目录被读取)

        modify          file or directory contents were written(文件或目录内容被修改)

        attrib          file or directory attributes changed(文件或目录属性被改变)

        close_write     file or directory closed, after being opened in

                        writeable mode

        close_nowrite   file or directory closed, after being opened in

                        read-only mode

        close           file or directory closed, regardless of read/write mode(文件或目录封闭,无论读/写模式)

        open            file or directory opened(文件或目录被打开)

        moved_to        file or directory moved to watched directory(文件或目录被移动至另外一个目录)

        moved_from      file or directory moved from watched directory

        move            file or directory moved to or from watched directory(文件或目录被移动另一个目录或从另一个目录移动至当前目录)

        create          file or directory created within watched directory(文件或目录被创建在当前目录)

        delete          file or directory deleted within watched directory(文件或目录被删除)

        delete_self     file or directory was deleted

        unmount         file system containing file or directory unmounted(文件系统被卸载)

[root@nfs01 ~]# mkdir /server/scripts -p(建立脚本目录)

[root@nfs01 ~]# cd /server/scripts

[root@nfs01 scripts]# vim inotify.sh


#!/bin/bash

inotify=/usr/bin/inotifywait

$inotify -mrq --format '%w%f' -e create,close_write,delete /data \(-mrq保持监控,递归,静默;-e对哪些事件监控,create增,close_write改,delete删)

|while read file

do

  cd / &&

  rsync -az ./data --delete rsync_backup@10.0.0.41::backup \(推送,注意--delete参数为完全覆盖,慎用!)

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

done

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

"inotify.sh" 9L, 242C 已写入                                                                  

[root@nfs01 scripts]# vim /etc/rc.local


#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.


touch /var/lock/subsys/local

/etc/init.d/rpcbind start

/etc/init.d/nfs start

/bin/sh /server/scripts/inotify.sh &(放入开机自启动,&为后台运行)

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

~                                                                                                               

"/etc/rc.local" 10L, 305C 已写入