zoukankan      html  css  js  c++  java
  • rsync+inotify文件实时同步

    //安装inotify

    //在代码发布服务器上安装inotify,执行如下命令
    tar xzvf inotify-tools-3.14.tar.gz
    cd inotify-tools-3.14
    ./configure
    make
    make install
    cd ..
    //在所有服务器上安装rsync,命令如下:
    tar zxvf rsync-3.0.9.tar.gz
    cd rsync-3.0.9
    ./configure
    make
    make install
    #------以上命令在每台服务器上都需要执行---------

    //配置

    //在代码发布服务器与需要同步的服务器之间配置ssh key信任,在代码发布服务器上生成公钥和私钥
    ssh-keygen -t rsa
    //直接三次回车
    //将公钥添加到各个需要更新的主机authorized_keys 文件中,在代码更新服务器上再执行
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.252#需要同步的服务器IP
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.254#需要同步的服务器IP
    
    //如果有提示 输入yes
    //按提示输入密码回车


    在代码发布服务器上以root身份创建inotify_rsync.sh脚本vi /root/inotify_rsync.sh 输入
    
    #!/bin/sh
    SRC=/data/www/    #代码发布服务器目录
    DST=/data/www/    #目标服务器目录
    IP="192.168.0.5 192.168.0.6"    #目标服务器IP,多个以空格隔开
    USER=root
    /usr/local/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' --exclude "(.swp|.swx|.svn)" 
    -e create,move,delete,close_write,attrib $SRC | while read files
    do
    for i in $IP
    do
        /usr/local/bin/rsync -ahqzt --exclude Runtime --delete $SRC $USER@$i:$DST
        echo $files >>/tmp/rsync.log 2>&1 
    done
    done

    //赋权

    //然后脚本可执行权限
    chmod +x /root/inotify_rsync.sh
    //设置开机自启动 ec赋予ho 
    "/root/inotify_rsync.sh &" >> /etc/rc.local
    //执行脚本
    /root/inotify_rsync.sh &
    //在代码更新服务器的/data/www/目录中创建文件,测试效果。
    //如果调试过程出现类似libiconv.so.2的错误请尝试执行如下命令:
    in -s/usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2

    // end 

  • 相关阅读:
    Navicat连接mysql提示1251解决方案
    js获取select下拉框选中的值
    Windows下安装Mysql数据库
    ASP.NET MVC API以及.Core API进行安全拦截和API请求频率控制
    myeclipse 10.7中文破解版 下载安装看着一篇就够了
    Runtime exception at 0x004000bc: invalid integer input (syscall 5)
    MARS(MIPS汇编程序和运行时模拟器)
    如何将本地的代码上传到github
    JavaWeb基础
    大学什么时候开学?这款小程序告诉你!
  • 原文地址:https://www.cnblogs.com/zhanzy/p/6616096.html
Copyright © 2011-2022 走看看