检查环境

linux内核在2.6.13版本开始,才支持inotify机制

  1. 检查当前linux内核版本

    uname -r

  2. 检查linux咫尺inotify相关的文件,系统存在如下三个文件及目录,就是支持inotify

    ls -l /proc/sys/fs/inotify max_queued_events:设置inotify实例时间队列可容纳的事件数量 max_user_instances:设置每个用户可以运行的事件命令进程数 max_user_watches:设置inotify命令检测的文件数量

安装inotify-tools

  1. 提前准好阿里云的epel源

    yum install inotify-tools -y

  2. 检查有关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