inotify 目录文件变更实时监控
# 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 <event>:监控指定的事件 # access:访问事件 # modify:编辑事件 # attrib:修改文件属性事件(修改文件元数据) # close_write:当文件从写模式下关闭的时候,会触发该事件 # close_nowrite:当文件从读模式下关闭的时候,会触发该事件 # close:无论以什么方式打开的文件,在关闭的时候都会触发该事件 # open:当文件被打开时,都会触发该事件 # moved_to:当一个文件移动到被监控的目录下,就会触发该事件 # moved_from:当一个文件从被监控目录下移走的时候,就会触发该事件 # moved_sekf:在监控目录下执行移操作,就会触发该事件 # create:创建文件的时候触发 # delete:删除文件的时候触发 # --timefmt <fmt>:指定时间显示的格式(和date格式一样) # --format <fmt>: # %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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?