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
网友评论