首页 > 技术文章 > inotify(rsync + while)

syy1757528181 2020-05-08 22:05 原文

使用inotify实时监控某一目录下的目录或文件

#使用yum安装inotify
[root@nfs /date]# yum provides inotifywait
[root@nfs /date]# yum -y install inotify-tools
[root@nfs /date]# rpm -q inotify-tools 
inotify-tools-3.14-9.el7.x86_64
[root@nfs /date]# rpm -ql inotify-tools 
/usr/bin/inotifywait   	#inotifywait在环境变量里面,可以TAB,可以直接执行			
/usr/bin/inotifywatch
/usr/lib64/libinotifytools.so.0
/usr/lib64/libinotifytools.so.0.4.1
[root@nfs /date]# rpm -qc inotify-tools 
#参数
-m 持续监控
-r 递归
-q 静默,仅打印时间信息
--timefmt 指定输出时间格式
--format 指定事件输出格式
%Xe 事件
%w 目录
%f 文件
-e 指定监控的事件
access 访问
modify 内容修改
attrib 属性修改
close_write 修改真实文件内容
open 打开
create 创建
delete 删除
umount 卸载
attrib 属性
close_write		写入并且关闭

#翻译
MODIFY		修改
backup		备份
close		关闭
DELETE		删除
CREATE		创建

#测试(ctrl+c 取消实时监控)
/usr/bin/inotifywait  -mrq  --format '%Xe  %w  %f' -e create,modify,delete,attrib,close_write  /backup

脚本

脚本1,作用:远程同步客户端 服务端的某一个目录,使两个目录里的 目录 文件 内容 一致

[root@backup ~]# vim rsync-inotify.sh
#!/bin/bash
export RSYNC_PASSWORD=123
jiankong_dir='/backup'
rsync_user='bck'
rsync_mkuai='backupmk'

rpm -q intify-tools &>/dev/null
[ echo $? -ne ];yum install-y inotify-tools

[ -d $jiankong_dir ]||mkdir -p $jiankong_dir

/usr/bin/inotifywait  -mrq  --format '%Xe  %w  %f' -e create,modify,delete,attrib,close_write $jiankong_dir | while read line;do
rsync -az --delete $jiankong_dir/ ${rsync_user}@10.0.0.41::${rsync_mkuai}
done &

脚本2,同一区域网下,一台主机监控另一台主机的某个目录,如果该目录下目录 文件 内容变动,发邮件

#!/bin/bash
export RSYNC_PASSWORD=123
jiankong_dir='/backup'
rsync_user='bck'
rsync_mkuai='backupmk'

if [ ! -d $jiankong_dir ];then
        mkdir -p $jiankong_dir
fi

ssh 10.0.0.8 "/usr/bin/inotifywait  -mrq  --format '%Xe  %w  %f' -e create,modify,delete,attrib,close_write $jiankong_dir" | while read line;do
        echo '这个智障需求,是李某鹏提出来的'| mail -s 'sha X' 133411023@qq.com
done &

脚本3,监控一台主机的某个目录,如果该目录下目录 文件 内容变动,发邮件

#!/bin/bash
export RSYNC_PASSWORD=123
jiankong_dir='/backup'
rsync_user='bck'
rsync_mkuai='backupmk'

if [ ! -d $jiankong_dir ];then
        mkdir -p $jiankong_dir
fi
/usr/bin/inotifywait  -mrq  --format '%Xe  %w  %f' -e create,modify,delete,attrib,close_write $jiankong_dir | while read line;do
        echo "$(date +%F-%T)_${jiankong_dir} 有变化啦,赶紧去看看吧,妖兽啦~~~" |mail -s 'xxx' 12345678@qq.com
done &

推荐阅读