inotify-tools的inotifywait工具用exclude 和 fromfile 排除指定后缀文件
今天打算使用 inotify-tool 来对线上程序文件进行监控, 因为有些目录是缓存目录, 所以要进行排除, 同时还要排除一些指定的后缀的文件, 比如 .swp 等
需要递归监控的目录为: /tmp/inotify-test-dir
需要排除的目录为: /tmp/inotify-test-dir/cache
需要排除特定后缀文件: .log .swp 文件
根据网上看的一些资料, 我先做了如下尝试:
/usr/local/bin/inotifywait -mr -e close_write,modify,create,move,delete –exclude ^.*\.(log|swp)$ –exclude “^/tmp/inotify-test-dir/cache” –timefmt %Y/%m/%d %H:%M –format %T %w%f %e /tmp/inotify-test-dir
发现无论如何改, 第一个排除指定后缀 .log 和 .swp 都不生效, 我以为是我写的正则有问题, 又修改了很多次, 还是不行. 没办法再次google, 最终还是让我发现了问题的所在, 原来 inotifywait 不支持两次 –exclude , 否则,后面的规则将覆盖前面的规则.
明白问题的所在后, 再次修改:
/usr/bin/inotifywait -mr -e modify,create,move,delete –exclude ‘^/tmp/inotify-test-dir/(cache|(.*/*\.log|.*/*\.swp)$)’ –timefmt ‘%Y/%m/%d %H:%M’ –format ‘%T %w%f %e’ /tmp/inotify-test-dir
这次ok 通过
———–
inotifywait 有 –fromfile 选项, 可以直接从文件中读入要监控的目录,和排除的目录. 在这里我使用 –fromfile ‘/tmp/inotify-file-list’ 选项
/tmp/inotify-file-list 文件的内容如下:
/tmp/inotify-test-dir
@/tmp/inotify-test-dir/cache
以@开头的路径代表的是要排除的目录和文件,其他的为要监控的文件
假如:我要递归监控 /tmp/inotify-test-dir 目录下的所有的所有的 .php 文件, 但是排除 /tmp/inotify-test-dir/cache 目录下的所有文件
我就可以这样写
/usr/bin/inotifywait -mr -e modify,create,move,delete –exclude ^.+\.[^php]$ –fromfile ‘/tmp/inotify-file-list’ –timefmt ‘%Y/%m/%d %H:%M’ –format ‘%T %w%f %e’
注意:
1、此种写法可以不用加“/tmp/inotify-test-dir”路径,fromfile中写有即可,经测试,加“/tmp/inotify-test-dir”路径也是可以正常运行
2、fromfile指向的文件,刚开始我是Notepad++创建,不知道是因为文件格式问题还是什么原因,导致在文件中写的规则出现莫名其妙的问题,后来通过touch命令新建一个文件,然后再在里面写入规则,测试后全部正常,害我白研究了一天时间。
附我在生产服务器上的自动同步脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/bin/sh SRC=/data/wwwroot/web/ #代码发布服务器目录 DST=/data/wwwroot/web/ #目标服务器目录 IP= "192.168.20.7" #目标服务器IP,多个以空格隔开 USER=www INOTIFY_EXCLUDE= "--fromfile /data/conf/shell/inotify_exclude.list" RSYNC_EXCLUDE= "--include-from=/data/conf/shell/rsync_include.list --exclude-from=/data/conf/shell/rsync_exclude.list" #su - $USER inotifywait -mrq --exclude "(.swp|.inc|.svn|.rar|.tar.gz|.gz|.txt|.zip|.bak)" -e modify,delete,create,close_write,attrib $INOTIFY_EXCLUDE | while read D E F do for i in $IP do /usr/bin/rsync -e 'ssh -p 5000' -ahqzt $RSYNC_EXCLUDE --delete $SRC $USER@$i:$DST done done |
参考资料:
inotifywait exclude 排除指定后缀文:http://blog.chaiyalin.com/2014/02/inotifywait-exclude.html
inotify-tools的inotifywait工具用exclude 和 fromfile 排除指定后缀文件的更多相关文章
- Linux tar命令之--exclude参数 排除指定的文件或目录
https://my.oschina.net/u/3285916/blog/1632552 参数: --exclude 打包时排除不需要处理的文件或目录 说明: tar -zcf a.tar.gz 打 ...
- Service系统服务(六):rsync基本用法、rsync+SSH同步、配置rsync服务端、访问rsync共享资源、使用inotifywait工具、配置Web镜像同步、配置并验证Split分离解析
一.rsync基本用法 目标: 本例要求掌握远程同步的基本操作,使用rsync命令完成下列任务: 1> 将目录 /boot 同步到目录 /todir 下 2> 将目录 /boot 下的 ...
- 2. Packet crafting tools (封包工具 6个)
2. Packet crafting tools (封包工具 6个) NetcatHping这个方便小巧的实用程序组装并发送定制的ICMP,UDP或TCP数据包,然后显示任何回复. 它受到ping命令 ...
- OS X 10.9 Mavericks下如何安装Command Line Tools(命令行工具)
OS X 10.9 Mavericks下如何安装Command Line Tools(命令行工具) 今天OS X 10.9 Mavericks正式发布,免费更新,立即去更新看看效果. 不过升级后安装命 ...
- unison+inotify 同步web代码并排除指定目录不同步
unison + inotify 实现web 数据双向同步 unison 是一款跨平台的文件同步对象,不仅支撑本地对本地同步,也支持通过SSH,RSH和Socket 等网络协议进行同步.unis ...
- Ubuntu 16.04 安装 VMware Tools(解决windows和Ubuntu之间不能互相复制粘贴文件的问题)
Ubuntu 16.04安装虚拟工具VMware Tools,指的是在虚拟机VMWare安装Ubuntu 16.04后再安装VMware Tools的过程.很多人接触Linux都是从虚拟机开始,而安装 ...
- [Nhibernate]SchemaExport工具的使用(一)——通过映射文件修改数据表
目录 写在前面 文档与系列文章 SchemaExport工具 SchemaUpdate工具 一个例子 总结 写在前面 上篇文章介绍了使用代码生成器的nhibernate模版来生成持久化类,映射文件等内 ...
- Linux tar命令exclude选项排除指定文件或目录
在linux中可以用tar打包目录以方便传输or备份,我们先来看一个例子 test 文件夹有如下文件 [root@lee ~]# ll test 总用量 -rw-r--r--. root root 4 ...
- 工具WinSCP:windows和Linux中进行文件传输
工具WinSCP:windows和Linux中进行文件传输 2016-09-21 [转自]使用WinSCP软件在windows和Linux中进行文件传输 当我们的开发机是Windows,服务器是Lin ...
随机推荐
- Linux管理,例行性工作,at和cron
at 仅执行一次就结束调度(服务atd必须启动) at的配置信息 1.我们设定的at进程其实都是被以文本的方式写入到/var/spool/at/目录内,然后这些设定的进程便会等待atd服务来启动这些进 ...
- word多级列表应用
- BaseRuntimeException自定义业务异常类实现
public class BaseRuntimeException extends RuntimeException { private final int code; public BaseRunt ...
- vueThink框架搭建与填坑(new)
自己跟着官网搭建vueThink框架,发现github上文档有很多坑.所以总结一下(仅针对WIN端下载使用) 1.安装node.js 前端部分是基于node.js上运行的,所以必须先安装node.js ...
- shell 数组遍历加引号和不加引号的区别?
前言 shell 是一个比较神奇的国度,里面有太多的坑需要填,今天需要填的坑就是,数组遍历在使用时加了引号和不加引号的区别. 案例 解析: 不加引号,数组中元素间的“空格”就会编程换行符 加引号, ...
- 010-字符串-C语言笔记
010-字符串-C语言笔记 学习目标 1.[掌握]二维数组的声明和初始化 2.[掌握]遍历二维数组 3.[掌握]二维数组在内存中的存储 4.[掌握]二维数组与函数 5.[掌握]字符串 一.二维数组的声 ...
- android29之UI控件的抽屉式实现方法之一(DrawerLayout和NavigationView)
添加依赖 implementation 'com.google.android.material:material:1.2.0-alpha06' 在Layout中创建两个Xml布局文件,header. ...
- c++ 启发式搜索解决八数码问题
本文对八数码问题 启发式搜索 (C++)做了一点点修改 //fn=gn+hn #include<iostream> #include<queue> #include<st ...
- Delphi 文件操作(4)Reset
procedure Reset(var F [: File; RecSize: Word ] ); { 作用: 对于文本文件,Reset过程将以只读方式打开文件,对于类型文件和无类型文件, ...
- Python-气象-大气科学-可视化绘图系列(二)——利用basemap叠加地图,并添加白化效果(代码+示例)
本文为原创链接: https:////www.cnblogs.com/zhanling/p/12193031.html 白化单图代码: import numpy as np import xarray ...