zoukankan      html  css  js  c++  java
  • Centos 6.5配置rsync+inotify实现文件实时同步

    1.安装rsync(两台机器执行相同的步骤)
    yum install gcc
    yum install rsyncd xinetd -y
    因为rsync是由xinetd启动的,所以需要修改一个配置
    vim /etc/xinetd.d/rsync
    disable = yes --修改为-->> disable = no
    启动并查看是否启动成功
    /etc/init.d/xinetd restart
    netstat -atnp |grep 873
    tcp        0      0 :::873                      :::*                        LISTEN      1503/xinetd
    2.服务部署
    yum install wget -y
    wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
    注意:需要检查你的系统是否支持inotify
    内核需要在2.6.13以上
    uname -r
    2.6.32-431.el6.x86_64
    并且有如下三个文件
    ll /proc/sys/fs/inotify/
    total 0
    -rw-r--r-- 1 root root 0 Nov 13 19:38 max_queued_events
    -rw-r--r-- 1 root root 0 Nov 13 19:38 max_user_instances
    -rw-r--r-- 1 root root 0 Nov 13 19:38 max_user_watches
    开始编译安装inotify
    tar zxvf inotify-tools-3.14.tar.gz
    cd inotify-tools-3.14
    ./configure --prefix=/usr/local/inotify && make && make install
    cd /usr/local/inotify
    查看一下下面的目录及文件    
    ls -l
    total 16
    drwxr-xr-x. 2 root root 4096 Nov 13 19:42 bin ##inotify执行命令(二进制)
    drwxr-xr-x. 3 root root 4096 Nov 13 19:42 include ##inotify程序所需用的头文件
    drwxr-xr-x. 2 root root 4096 Nov 13 19:42 lib ##动态链接的库文件
    drwxr-xr-x. 4 root root 4096 Nov 13 19:42 share ##帮助文档

    工具集合介绍:

    一共安装了2个工具(命令),即inotifywait和inotifywatch

    inotifywait:在被监控的文件或目录上等待特定文件系统事件(open、close、delete等)发生,执行后处于阻塞状态,适合在shell脚本中使用。

    inotifywatch:收集被监视的文件系统使用度统计数据,指定文件系统事件发生的次数统计。

    创建一个软连接
    ln -s /usr/local/inotify/bin/inotifywait /bin/

    常用参数:
    -r  ##递归查询目录
    -q  ##打印很少的信息,仅仅打印监控相关的信息
    -m  ##始终保持事件监听状态
    --excludei ##排除文件或目录时,不区分大小写
    --timefmt  ##指定时间的输出格式

    配置实时同步目录:

    1.在这我们通过ssh秘钥的方法来认证,当然也可以用rsync指定密码的形式
      在同步端生成ssh秘钥对
    ssh-keygen   (直接回车就行)

    将生成的公钥同步到你的被同步机器
    scp /root/.ssh/id_rsa.pub 192.168.2.11:/root/.ssh/  
    需要在被同步机器上将公钥改名
    ls -l /root/.ssh
    total 8
    -rw------- 1 root root 404 Nov 13 13:48 authorized_keys

    或者可以直接用(这种方法不用改名,详情可百度密钥对的配置)
    ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.2.11

    2.同步端编写同步的脚本
    cat /shell/auto_rsync.sh
    #!/bin/bash
    /usr/local/inotify/bin/inotifywait -mrq -e modify,delete,create,attrib,move /usr/local/src |while read events
    do
        rsync -avzP --delete -e 'ssh -p 60820' /usr/local/src/ 172.17.33.188:/usr/local/src
        echo "`date +'%Y-%m-%d %H:%M:%S'` 出现事件:$events" >> /shell/auto_rsync.log
    done

    3.在同步端创建一个abc的文件测试
    touch /usr/local/src/abc

    4.查看记录的log日志会有你刚刚创建的文件
    5.在被同步机器上面查看文件或目录是否同步过去

  • 相关阅读:
    Stream中的map
    项目中的process.bpmn的读-过程
    windows10打开switchHost,提示无修改权限
    Windows10安装node.js
    工作中的小发现
    启动redis
    call apply bin 的区别
    利用promise 让 函数按序执行
    uni-app 小程序
    插件 Generate css tree
  • 原文地址:https://www.cnblogs.com/hftian/p/9830195.html
Copyright © 2011-2022 走看看