zoukankan      html  css  js  c++  java
  • Rsync+intify实时同步

    inotify企业工作场景:
      inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,使用的软件有inotify,sersync
    具体操作:
      1.准备环境,配置好rsync,确定可以拉取推送文件,然后在客户端配inotify

    [root@localhost ~]# uname -r #查看一下内核版本,要在2.6.13以上才行
    [root@localhost ~]# ls -l /proc/sys/fs/inotify/ #显示三个文件则证明支持
    -rw-r--r-- 1 root root 0 Sep 23 05:49 max_queued_events#监控的数量在这里
    -rw-r--r-- 1 root root 0 Sep 23 05:49 max_user_instances#
    -rw-r--r-- 1 root root 0 Sep 23 05:49 max_user_watches

      2.下载inotify的源码包

    [root@localhost tools]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

      下载完记得看一下啊:

    [root@localhost tools]# ls inotify-tools-3.14.tar.gz

      3.解压源码包并编译安装

    [root@localhost tools]# tar -xf inotify-tools-3.14.tar.gz
    [root@localhost tools]# cd inotify-tools-3.14
    [root@localhost inotify-tools-3.14]# ./configure --prefix=/usr/local/inontify-tools-3.14
    [root@localhost inotify-tools-3.14]# make&&make install

      4.创建软连接

    [root@localhost tools]# ln -s /usr/local/inontify-tools-3.14 /usr/local/inontify
    [root@localhost inontify]# ll
    total 16
    drwxr-xr-x 2 root root 4096 Sep 23 06:07 bin#inoyify执行命令(二进制)
    drwxr-xr-x 3 root root 4096 Sep 23 06:07 include#inotify程序所需的头文件
    drwxr-xr-x 2 root root 4096 Sep 23 06:07 lib#动态链路的库文件
    drwxr-xr-x 4 root root 4096 Sep 23 06:07 share#帮助文件

    ----------------------------------------------------------------------------------------------------
    inotifywait命令常用参数详情

    -r|--recursive Watch directories recursively.#递归查询目录
    --fromfile <file>
    Read files to watch from <file> or `-' for stdin.
    -o|--outfile <file>
    Print events to <file> rather than stdout.
    -s|--syslog Send errors to syslog rather than stderr.
    -q|--quiet Print less (only print events).#打印监控事件的信息
    -qq Print nothing (not even events).
    --format <fmt> Print using a specified printf-like format
    string; read the man page for more details.
    --timefmt <fmt> strftime-compatible format string for use with
    %T in --format string.
    -c|--csv Print events in CSV format.
    -t|--timeout <seconds>#指定时间输出的格式
    When listening for a single event, time out after
    waiting for an event for <seconds> seconds.
    If <seconds> is 0, inotifywait will never time out.
    -m|--monitor Keep listening for events forever. Without
    this option, inotifywait will exit after one
    event is received.#始终保持时间监听状态
    -d|--daemon Same as --monitor, except run in the background
    logging events to a file specified by --outfile.
    Implies --syslog.
    -h|--help Show this help text.
    @<file> Exclude the specified file from being watched.
    --exclude <pattern>
    Exclude all events on files matching the
    extended regular expression <pattern>.
    --excludei <pattern>#排除文件或目录时,不区分大小写
    Like --exclude but case insensitive.
    -e|--event <event1> [ -e|--event <event2> ... ]#通过此参数可以指定需要监控的事件,如下所示:
    Listen for specific event(s). If omitted, all events are 
    listened for.#注意这个参数是配合下面的参数用的
    Events:
    access file or directory contents were read#文件或目录被读取
    modify file or directory contents were written#文件或目录内容被修改
    attrib file or directory attributes changed#文件或目录属性被改变
    close_write file or directory closed, after being opened in
    writeable mode#写入文件关闭时的事件
    close_nowrite file or directory closed, after being opened in
    read-only mode
    close file or directory closed, regardless of read/write mode#文件或目录封闭,无论读/写模式
    open file or directory opened#文件按目录被打开
    moved_to file or directory moved to watched directory文件或目录被移至另外一个目录
    moved_from file or directory moved from watched directory
    move file or directory moved to or from watched directory#文件或目录被移动另一个目录或从另一个目录移动至当前目录
    create file or directory created within watched directory#文件或目录被创建再当前目录
    delete file or directory deleted within watched directory#文件或目录被删除
    delete_self file or directory was deleted
    unmount file system containing file or directory unmounted#文件系统被卸载

    ----------------------------------------------------------------------------------------------------------------
      5.人工测试监控事件
        测试create:

    [root@localhost inontify]# /usr/local/inontify-tools-3.14/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /backup 

      再开一个连接然后在监控的目录建立文件,这样就可以看见原来的CRT窗口内容会改变

    [root@localhost backup]# touch 6.txt
    24/09/19 00:46 /backup/6.txt

      测试delete和create:

    [root@localhost inontify]# /usr/local/inontify-tools-3.14/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,delete /backup 

      6.编写实时监控脚本
      脚本要放在一个固定的位置:/server/scriots下

    [root@localhost scriots]# vim inotify.sh
    #!/bin/sh
    cmd="/usr/local/inontify/bin/inotifywait"
    $cmd -mrq --format '%T %w%f' -e create,close_write,delete /backup|
    while read line
    do
    rsync -az --deldet $line rsync_backup@192.168.157.132::oldboy --password-file=/etc/rsync.password
    done

      7.事件相关参数大小:

    [root@localhost scriots]# cat /proc/sys/fs/inotify/max_queued_events 
    16384#改成327679
    [root@localhost scriots]# cat /proc/sys/fs/inotify/max_user_instances 
    128
    [root@localhost scriots]# cat /proc/sys/fs/inotify/max_user_watches 
    8192#改成50000000

    inotify的缺点:
    1.并发不能大于200个文件
    2.一般的脚本,每次都是全部推送一次

  • 相关阅读:
    MFC对话框编程四:输入焦点的传递
    lua笔记 一个C++调用lua函数的类的实现
    [置顶] 设计模式之享元模式
    扩展实现PHP Benchmark
    TLD如何运行OpenTLD(TLD_HY20121127)
    [Oracle] Kill Session 经验总结
    php 该如何获取从百度搜索进入网站的关键词
    php+js实现百度地图多点标注的方法
    laraveladmin 报错 Disk [admin] not configured, please add a disk config in `config/filesystems.php`....
    PHP获取当前页面的url
  • 原文地址:https://www.cnblogs.com/zrxuexi/p/11579423.html
Copyright © 2011-2022 走看看