案例在使用inotifywait触发同步svn源码的时候,需要过滤每个目录的.svn,这时候就需要写个正则了,不然会频繁触发同步软件,假设/tmp/src/www/2016/
以及/tmp/src/www/2015/cache/
目录下的所有文件不用同步,所以不需要监控,/tmp/src/
下的其他文件和目录都同步。(其实对于打开的临时文件,可以不监听modify
时间而改成监听close_write
)
inotifywait排除监控目录有--exclude <pattern>
和--fromfile <file>
两种格式,并且可以同时使用,但主要前者可以用正则,而后者只能是具体的目录或文件。
# vi /etc/inotify_exclude.lst:
/tmp/src/pdf
@/tmp/src/2014
使用fromfile
格式只能用绝对路径,不能使用诸如*
正则表达式去匹配,@
表示排除。
所以每个目录都有相同的东西要过滤排除的时候,并且格式比较复杂,必须使用正则,那只能在inotifywait
中加入选项,如--exclude '(.*/*\.log|.*/*\.swp|.svn)$|^/tmp/src/www/(2016|0808.*/cache.*)'
,表示排除/tmp/src/www/以下的2016目录,和所有0808*目录下的带cache的文件或目录,以及/tmp/src目录下所有的以.log或.swp结尾的文件。