inotify-tools
- 提供文件监控的一款工具,可以监控计算机的目录
- 官网: https://sourceforge.net/projects/inotify-tools/
- 提供的命令:
- inotifywait , 等待并收集文件或目录中的特定事件
- inotifywatch,统计收集的信息
-
inotifywait
-
用途: 等待并收集文件的访问信息
-
语法:
]# inotifywait [选项] file1 [file2] [file3] [...]
-
选项:
-m|--monitor 持续监控(捕获一个事件后不退出,默认会退出) -r|--recursive 递归监控(包括子目录及文件) -q|--quiet 减少屏幕输出信息(只输出事件) -qq 不打印内容(甚至是事件) -h|--help 显示帮助信息 @<file> 排除指定文件不监控 --exclude <pattern> 排除与扩展正则表达式<pattern>匹配的文件上的所有事件 --excludei <pattern> 不区分大小写排除正则<pattern>匹配的文件监控 --fromfile <file> 从file文件中读取监控路径 --format <fmt> 使用指定的类似printf的格式字符串进行打印;有关详细信息,请阅读手册页 --timefmt <fmt> 使用strftime兼容格式字符串,用于--format字符串中的%T -c|--csv 以csv格式输出事件 -t|--timeout <seconds> 侦听单个事件时的超时时间,0为永不超时 -e|--event <event1> 指定监视的事件类型,若省略则显示所有
-
退出状态值:
0 - 接收到一个要求监视的事件 1 - 接收到没有要求监视的事件(通常是自己删除或卸载),或发生了错误 2 - 在--timeout指定的时间内未发生任何事件
-
事件类型:
access 已读取文件或目录内容 modify 文件或目录内容已修改写入 attrib 文件或目录属性已修改 close_write 文件或目录在以可写模式打开后关闭 close_nowrite 文件或目录在以只读模式打开后关闭 close 文件或目录已关闭,不考虑读/写模式 open 文件或目录已打开 moved_to 文件或目录移动到监视目录 moved_from 从监视目录移动的文件或目录 move 文件或目录移到或移离被监视目录 create 在监视目录中创建的文件或目录 delete 在被监视目录中删除的文件或目录 delete_self 文件或目录已删除 unmount 包含卸载的文件或目录的文件系统
-
-
inotifywatch
-
用途: 收集访问信息并统计
-
语法:
]# inotifywatch [选项] file1 [file2] [file3] [...]
-
选项:
与inotifywait基本相同 -z|--zero 在最终表中,输出行和列 -a|--ascending <event> 按特定事件类型<event>生序排序 -d|--descending <event> 按特定事件类型<event>降序排序
-
退出状态值:
0 - 正常退出 1 - 发生了错误
-
事件类型:
与inotifywait基本相同
-
实例:
#终端1
]# /opt/inotify/bin/inotifywait -mrq /tmp
#打开终端2
]# ls /tmp
]# touch /tmp/test
#切回终端1
/tmp/ OPEN,ISDIR
/tmp/ CLOSE_NOWRITE,CLOSE,ISDIR
/tmp/ CREATE test
/tmp/ OPEN test
/tmp/ ATTRIB test
/tmp/ CLOSE_WRITE,CLOSE test
-
inotify监控目录
实时监控主机(192.168.4.11)目录,当发生变化后,实时备份到另一主机(192.168.4.12) #被监控主机(192.168.4.11) 1.部署秘钥 ]# ssh-keygen -t rsa -f "/root/.ssh/id_rsa" -P "" ]# ssh-copy-id root@192.168.4.12 2.安装工具 ]# yum -y install inotify-tools ]# yum -y install rsync #同步双方都需要安装 3.编写监控脚本 ]# vim inotify_rsync.sh #!/bin/bash RES='/var/log/' DES='root@192.168.4.12:/log/' while inotifywait -rqq $RES do rsync -az --delete $RES $DES done 4.运行脚本 ]# bash inotify_rsync.sh & #备份主机(192.168.4.12) ]# yum -y install rsync