检查环境
linux内核在2.6.13版本开始,才支持inotify机制
检查当前linux内核版本
uname -r
检查linux咫尺inotify相关的文件,系统存在如下三个文件及目录,就是支持inotify
ls -l /proc/sys/fs/inotify max_queued_events:设置inotify实例时间队列可容纳的事件数量 max_user_instances:设置每个用户可以运行的事件命令进程数 max_user_watches:设置inotify命令检测的文件数量
安装inotify-tools
提前准好阿里云的epel源
yum install inotify-tools -y
检查有关inotify的操作命令
rpm -ql inotify-tools | head -2 /user/bin/inotifywait /user/bin/inotifywatch
inotify命令工具
inotifywait命令实践
语法:
inotifywait -mrq —timefmt “%F” —format “%T %w%f 事件信息:%e” /data
实际案例
inotifywait -mrq —timefmt “%F” —format “%T %w%f” %e create /data
inotify:命令
-m:表示一直处在检测状态
-r:递归的检测
-q:打印出检测的事件信息
—timefmt:对时间格式化
—format:对日志信息格式化
%T:使用有—timefmt所定义的格式
%w:表示显示事件发生的目录
%f:表示事件发生的文件
-e:默认inotifywait是监控所有事件,可以用-e单独的指定某种事件 events
“%F” :输出时间的格式
%d:日期,几号
%m:月份
%y:年份的信息,显示后两位
%T:显示时分秒
“%y-%m-%d %T” —->>> 22-04-23 17:46:23
inotify增删改事件
close事件 close_write,close_nowwrite 文件或者目录关闭,不管是读还是写都包含了关闭的操作
close_write 包含create事件 不包含创建目录事件,包含了创建文件的事件
move 文件或目录无论是移动,还是移除监控目录,都被检测
delete事件
检测一个文件夹,单独指定delete事件,只有在该目录下的删除动作,才会触发监控
inotifywait -mrq —timefmt “%y-%m-%d %T” —format “%T %w%f 当前事件有: %e” -e delete /data
close_write事件
close_write事件它能够监控目录内的创建,修改两个事件
close_write事件包含了create事件
inotifywait -mrq —timefmt “%y-%m-%d %T” —format “%T %w%f 当前事件有:%e” -e close_write /data
inotify检测所有事件
inotifywait -mrq —timefmt “%y-%m-%d %T” —format “%T %w%f 当前事件有:%e” /data
inotify结合rsync实现数据实时同步
可以利用inotify对目录的时间监控功能,一但监控到数据变化,就进行同步的操作
脚本化实现事件检测与rsync进行数据同步
touch .sh结尾的脚本文件,写入如下内容
使检测到/data目录下有数据增加,删除的时候,就立即触发rsync命令同步
!/bin/bash
cmd = “/uesr/bin/inotifywait” $cmd -mrq —timefmt “%y-%m-%d %T” —format “%T %w%f 当前事件有:%e” /data | \ while read line do cd /data && \ rsync -az —delete ./ rsync_backup@192.168.47.130::backup done
