# inotify 软件
安装:通过epel,安装在客户端
功能:实时监控目录下文件的更变
监控事件:创建、删除、修改、移动…
安装位置:客户端
安装命令:
sudo apt-get install inotify-tools
源码安装:
wget --no-check-certificate http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar xzvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr
make
make install
安装后的应用程序:inotifywait、inotifywatch
inotifywait
选项:
-r:递归,对目录中的子目录也进行监控
-q:仅仅打印少量信息(仅仅打印监控的事件)
-m:一直处于监控状态
-d:和-m一样,区别是-d是后台运行
-o file:将监控到的事件输出到一个文件中(默认输出到终端)
-s:将错苏信息输出到系统日志中(默认输出到终端)
--excludei:忽略文件名的大小写
-e :监控指定的事件
access:访问事件
modify:编辑事件
attrib:修改文件属性事件(修改文件元数据)
close_write:当文件从写模式下关闭的时候,会触发该事件
close_nowrite:当文件从读模式下关闭的时候,会触发该事件
close:无论以什么方式打开的文件,在关闭的时候都会触发该事件
open:当文件被打开时,都会触发该事件
moved_to:当一个文件移动到被监控的目录下,就会触发该事件
moved_from:当一个文件从被监控目录下移走的时候,就会触发该事件
moved_sekf:在监控目录下执行移操作,就会触发该事件
create:创建文件的时候触发
delete:删除文件的时候触发
--timefmt :指定时间显示的格式(和date格式一样)
%f:输出发生事件的名称
%w:输出繁盛事件的文件所在目录的绝对路劲
%e:输出发生时间的名称(多个事件以空格隔开)
%Xe:和%e唯一区别是多个事件以X隔开
%T:输出发生事件的时间(时间格式由--timefmt指定)
例子:
inotifywait -mrq --timefmt "%F%T" --format "%T %w %f" -e create,delete,modify /test
实时同步脚本
#!/bin/bash
prog="inotifywait"
events="create,delete,modify,attrib"
iopt="-mrq"
lpath="/test/"
rhost="10.0.0.41"
vuser="vuser1"
secfile="/etc/rsync.passwd"
ropt="-az --delete"
modename="web1"
$prog $iopt --format "%T %w %f" -e $events $lpath | while read line
do
rsync $lpath $line $vuser@$rhost::$modename --password-file=$modename
done
sersync+rsync实时同步
sersync其实就是对inotify进行了一个包装,将配置信息以xml的方式进行配置,并进行了中文翻译
sersync会比自己配置方便一点。还可以设置多线程模式。