inotify 目录文件变更实时监控
阅读原文时间:2023年07月08日阅读:1

# 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格式一样)

--format

%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会比自己配置方便一点。还可以设置多线程模式。

安装示例:https://www.cnblogs.com/mouseleo/p/12587126.html

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章