首先修改/etc/sysctl.conf
fs.inotify.max_queued_events = 16384 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 1048576 sysctl -p
下载inotify软件包,解压
tar xf inotify-tools-3.14.tar.gz cd inotify-tools-3.14/ ./configure && make && make install
监测/www/html/为例,复制窗口,在其目录下进行操作时,会有输出
inotifywait -mrq -e modify,attrib,create,delete,move /www/html/
-m是要持续监视变化。 -r使用递归形式监视目录。 -q减少冗余信息,只打印出需要的信息。 -e指定要监视的事件列表。 access 访问,读取文件。 modify 修改,文件内容被修改。 attrib 属性,文件元数据被修改。 move 移动,对文件进行移动操作。 create 创建,生成新文件 open 打开,对文件进行打开操作。 close 关闭,对文件进行关闭操作。 delete 删除,文件被删除。
实时监控inotify脚本
vim /opt/inotify INOTIFY_CMD="inotifywait -mrq -e modify,attrib,create,delete,move /www/html/" RSYNC_CMD="rsync -avzH --delete --password-file=/etc/rsync_passwd /www/html/ rsync://backuper@192.168.200.114:/www root" $INOTIFY_CMD |while read A B C do if [ $(pgrep rsync | wc -l ) -le 1 ] then $RSYNC_CMD fi done
开启脚本后启动inotify实时监测,如果监测到输出信息后,执行if语句:过滤rsync进程,如果当前rsync没处于正在执行状态的话,就执行远程同步命令