inotify参数及配置说明

inotify配置文件

max_queued_events  这个是说事件队列可以容纳的事件

max_user_instances  这个是设置每个用户可以运行的进程数量

max_user_watches   监控最多的文件

Inotify-tools提供的两个工具:

  • inotifywait:通过inotify API等待被监控文件上的相应事件并返回监控结果。
  • inotifywatch:用于收集关于被监视的文件系统的统计数据。

inotifywait参数

  • -m :实时监控。
  • -d:后台运行。
  • -r:递归,对子目录监控。
  • -e:监控事件。以下
  • access:检测文件访问事件。
  • close_write:写入关闭事件。
  • modify:文件发生变化。
  • attrib:文件属性变化事件。
  • delete:文件被删除。
  • --timefmt :当在--format选项中使用%T时,--timefrt选项则可以用来指定自定义的符合strftime规范的时间格式,此时间格式可用的格式符可以通过strftime的手册页获取;--timefrt后常用的参数是'%d/%m/%y %H:%M';
  • --format :自定义inotifywait的输出格式,如--format '%T %w %f';常用的格式符如下:
  • %w:显示被监控文件的文件名;
  • %f:如果发生某事件的对象是目录,则显示被监控目录的名字;默认显示为空串;
  • %T:使用--timefmt选项中自定义的时间格式.
  • eg. inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write /data #输出时间
  • eg. innotifywait -mrq --format '%w%f' -e create,close_write,delete /data #简化输出

inotify安装

实验环境

角色ServerClient
IP地址192.168.1.11192.168.1.22

安装inotif

[root@server ~]# tar -zxf inotify-tools-3.14.tar.gz 
[root@server ~]# cd inotify-tools-3.14/
[root@server inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify && make && make install
[root@client inotify-tools-3.14]# cd /usr/local/inotify/
[root@client inotify]# ln -s /usr/local/inotify/bin/* /usr/local/bin/

创建要监听的文件及目录

# 服务端
[root@server ~]# mkdir /one
[root@server ~]# cd /one/
[root@server one]# touch aa bb cc dd

# 客户端
[root@client ~]# mkdir /two
[root@client ~]# cd /two/

inotify监听目录状态

# 创建和删除状态(灵活添加)
[root@client inotify]# inotifywait -mrq --format %w%f -e create,delete,close_write /one/

新开终端

[root@client two]# rm -rf *

查看inotify终端返回

[root@client inotify]# inotifywait -mrq --format %w%f -e create,delete,close_write /two/
/two/aa
/two/bb
/two/cc
/two/dd

编写Shell脚本

[root@server /]# vim rsync.sh
# 实现功能:服务端监听指定目录,服务端在此目录创建文件,会自动同步到客户端的指定目录
#!/bin/bash

inotifywait -mrq --format %w%f -e create,delete,close_write /one | while read file
    do
        if [ -f $file ];
    then
        rsync -r --delete $file root@192.168.1.22:/two
    else
        rsync -r --delete /one/* root@192.168.1.22:/two
        fi
    done

基于执行权限

[root@server /]# chmod +x rsync.sh

放在后台运行

[root@server /]# nohup ./rsync.sh &
[2] 67899

测试:是否同步

# 服务端去指定目录创建文件
[root@server /]# cd /one/
[root@server one]# rm -rf *
[root@server one]# touch shuaiguoer.com

# 客户端验证是否同步
root@client ~]# cd /two/
[root@client two]# ls
shuaiguoer.com
Last modification:July 23rd, 2020 at 09:27 pm
如果觉得我的文章对你有用,请随意赞赏