使用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 &