美文网首页
inotifywait实现文件监控

inotifywait实现文件监控

作者: August________ | 来源:发表于2019-11-22 00:27 被阅读0次

inotifywait实现文件监控

  • 配合rsync实现文件同步监控,监听某个目录

安装

# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@host1 Software]# tar xf inotify-tools-3.14.tar.gz 
[root@host1 Software]# cd inotify-tools-3.14
[root@host1 Software]# make && make install

命令介绍

  • 监听test目录
# /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f %e' -e modify,delete,create,attrib /test

  • 参数说明
参数 说明
-m 持续监听
-r 使用递归方式监听目录
-q 减少冗余信息
--timefmt 时间格式
--format 监听到文件信息变化
-e 指定监听事项

--timefmt:ymd分别表示年月日,H表示小时,M表示分钟。

--format:%w,表示发生事件的目录,

​ %f,发生事件的文件

​ %e:表示发生的事件

]# /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f %e' -e modify,delete,create,attrib /test
21/11/19 19:36 /test/ 4.txt CREATE
21/11/19 19:36 /test/ 4.txt ATTRIB
21/11/19 19:36 /test/ 3.txt CREATE
21/11/19 19:36 /test/ 3.txt ATTRIB

  • 监听的事件
参数 说明
access 访问读取文件
modify 文件内容别修改
move 文件移动
attrib 文件元数据修改
create 创建和生产新文件
delete 文件被删除

inotifywait+rsync同步脚本

#!/bin/bash
export PATH=./sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:$PATH

src=/tmp1
#dest=root@192.168.0.18::dest
des=/tmp2
#CMD="rsync -avzcR --password-file=/etc/rsyncd.passwd"
CMD="rsync -avzcR --delete"
LASTFILE=ABC

cd ${src} || exit 1
inotifywait -mrq --format  '%,e %w%f' -e create,delete,modify,attrib,close_write,move ./ | while read file
do
    echo $(date) : $file

    EVENT=$(echo $file | awk '{print $1}')
     FILE=$(echo $file | awk '{print $2}')

    if [[ "${LASTFILE}" == "${FILE}" ]] ; then continue; fi

    ${CMD} $(dirname ${LASTFILE}) ${des}

    LASTFILE=${FILE}
done

相关文章

网友评论

      本文标题:inotifywait实现文件监控

      本文链接:https://www.haomeiwen.com/subject/hiaxwctx.html