1.手工配置inotify的监控事件,增删改查
1.1检测目录的增删改事件
[root@nfs01 ~]# inotifywait -mrq --timefmt “%y-%m-%d %T” --format “%T %w%f 当前事件有:%e” -e close_write,delete /data/
再开一个终端,修改数据
[root@nfs01 data]# touch /data/超哥带你学inotify.txt
[root@nfs01 data]# echo "超哥带你飞" >> /data/超哥带你学inotify.txt.bak
[root@nfs01 data]#
[root@nfs01 data]# rm -rf /data/*
1.2Inotify能够检测到如下信息
/data/超哥带你学inotify.txt
/data/超哥带你学inotify.txt.bak
/data/chaoge.txt
/data/chaoge.txt.bak
/data/超哥带你学inotify.txt.bak
/data/嗨起来
2.编写实时监控和复制脚本
2.1.生成一个数字1,2,3的文件
seq 3 > /tmp/chaoge.txt
2.2.编写一个脚本,能够循环读取文件内容
[root@nfs01 tmp]# cat test.sh
cat ./chaoge.txt | \
while read line
do
echo $line
done
2.3.检查文件
[root@nfs01 tmp]# ls
chaoge.txt test.sh
2.4.执行该脚本,-x参数执行脚本,输出执行过程,调试利器,也可以不加
[root@nfs01 tmp]# sh -x test.sh
+ read line #按行读取
+ cat ./chaoge.txt #读取文件
+ echo 1 #输出1
1
+ read line #按行读取
+ echo 2 #输出2
2
+ read line
+ echo 3
3
+ read line
3.操作实时同步的脚本
3.1.创建统一管理脚本的文件夹
[root@nfs01 tmp]# mkdir -p /MyInotify/scripts
3.2.创建针对事件变化完整复制的脚本 monitor.sh
[root@nfs01 scripts]# cat monitor.sh
#!/bin/bash
cmd="/usr/bin/inotifywait"
$cmd -mrq --timefmt "%y-%m-%d %T" --format "%T %w%f 当前事件有:%e" -e close_write,delete /data | \
while read line
do
cd /data && \
rsync -az --delete ./ rsync_backup@192.168.178.139::backup
done
4.在nfs01机器上执行脚本
4.1
[root@nfs01 scripts]# sh -x monitor.sh
4.2测试脚本没问题后,可以将脚本运行在后台,实时监听文件变化,进行同步,保证数据备份安全
脚本放置后台运行,在前台运行会占用终端,且终端关了,任务会断
[root@nfs01 scripts]# /bin/sh /MyInotify/scripts/monitor.sh &>/dev/null &
[1] 3004
[root@nfs01 scripts]# jobs
[1]+ 运行中 /bin/sh /MyInotify/scripts/monitor.sh &>/dev/null &
[root@nfs01 scripts]#
4.3该任务添加至开机启动文件
[root@nfs01 scripts]# tail -2 /etc/rc.local
#inotify + rsync script by chaoge
/bin/sh /MyInotify/scripts/monitor.sh &>/dev/null &
5.Inotify优化参数
有关inotify的内核参数文件,可以针对企业需求进行优化,修改如下
[root@nfs01 scripts]# cat /proc/sys/fs/inotify/max_*
16384
128
8192
[root@nfs01 scripts]# echo "50000000" > /proc/sys/fs/inotify/max_user_watches
[root@nfs01 scripts]# echo "50000000" > /proc/sys/fs/inotify/max_queued_events