搭建inotify文件监控下载安装yum -y install gcc cc automake libtoolwget http://www.zhaojunhui.cn/myfile/office/i
搭建inotify文件监控
下载安装
yum -y install gcc cc automake libtoolwget http://www.zhaojunhui.cn/myfile/office/inotify-tools-3.14.tar.gztar xvf inotify-tools-3.14.tar.gzcd inotify-tools-3.14.tar./configuremake && make install
说明信息
在系统下执行man inotify 、 man inotifywait、man inotifywatch可查看相关命令信息,ls /proc/sys/fs/inotify/可以看到显示 max_queued_events max_user_instances max_user_watches 则说明支持inotify
事件参数
事件名称 | 事件描述 |
---|---|
IN_ACCESS | 文件访问事件 |
IN_MODIFY | 文件修改事件 |
IN_ATTRIB | 文件属性被修改事件,如 chmod、chown、touch 等 |
IN_CLOSE_WRITE | 可写文件被关闭事件 |
IN_CLOSE_NOWRITE | 不可写文件被关闭事件 |
IN_OPEN | 文件打开事件 |
IN_MOVED_FROM | 文件被移走,如 mv |
IN_MOVED_TO | 文件被移来,如 mv、cp |
IN_CREATE | 文件或目录创建事件 |
IN_DELETE | 文件或目录被删除事件,如 rm |
IN_DELETE_SELF | 自删除,即一个可执行文件在执行时删除自己 |
用法
inotifywait [选项] <FILE1> <FILE2> . . .
-h 或 --help 显示帮助--exclude <pattern> 指定排除(忽略)部分文件或目录,这些文件或目录上不监听任何事件,正则表达式书写(相对路径)FMT: # --exclude 'Runtime' //忽略对Runtime目录的事件监听--excludei <pattern> 与--exclude相同,区别是此选项正则表达式忽略大小写-m 或 --monitor 持续保持监听(如果不加此选项,则监听到一次后便退出)-d 或 --daemon 以守护进程方式后台运行(除了在后台运行外,与-m选项一样)-r 或 --recursive 递归监听其下所有子目录及文件--fromfile <file> Read files to watch from <file> or '-' for stdin.-o 或 --outfile <file> 将事件输出到指定文件,而不输出到屏幕 FMT: -o /var/log/inotifywait.log-s 或 --syslog 将错误发送到系统日志,而不是输出到屏幕-q 或 --quiet 打印较少信息(仅打印事件)-qq 不打印任何信息(静默方式)--format <fmt> 设置打印屏幕的格式,常见选项:%T时间;%w触发事件文件所在绝对路径;%f触发事件文件名称;%e触发的事件名称; FMT: # --format '%T %f %e' --timefmt <fmt> 指定输出时间内容,相当于将时间赋值给%T FMT: # --timefmt '%y-%m-%d %H:%M'-c 或 --csv 用CSV格式打印事件-t 或 --timeout <seconds> 指定一次性监听时间,超时退出监听(值为0表示永不超时,单位:秒),不可与 -m -d 连用 FMT: # -t 60 //设定监听60秒,60秒内监听到事件立即退出,如果监听不到事件60秒后也退出-e 或 --event <event1> [ -e|--event <event2> ... ] 指定要监听的事件(多个事件用逗号分割) FMT: # -e 'create,delete,close_write,attrib,moved_to'
创建共享库文件
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.0ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
创建文件测试示例
mkdir /test/inotify-testinotifywait /test/inotify/
另一个窗口进入该目录则提示
Setting up watches.Watches established./test/inotify/ OPEN,ISDIR inotify-test
在inotify服务器上写入脚本并后台执行,与rsync合并使用实现不同服务器间文件实时传输
#!/bin/bashSRC=/www/wwwroot/html/SRC2=/test/backup/inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %f %e' -e modify,create,move,delete,attrib $SRC |while read line doecho "$line" > /var/log/inotify_web 2>&1/usr/bin/rsync -rvzp --delete --progress $SRC 192.168.40.129:$SRC2;done &