• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能

    0x0 测试环境

    总部生产服务器与分部备份服务器要求实现异地数据备份,环境如下

    **centos 6.5**
    生产服务器目录: /home/zytest/files
    备份服务器目录: /home/zytest/files
    用户 / 密码: zytest / zytest

    0x1 生产服务器环境搭建

    0x1.1 安装gcc编译器和rsync

    yum install gcc rsync -y

    0x1.2 拷贝inotify到服务器并解压

    cd /root
    tar xfvz inotify-tools-3.13.tar.gz

    0x1.3 进入inotify 目录安装

     cd inotify-tools-3.13
     ./configure
     make
     make install     
     
     /usr/local/bin/inotifywait ##检查是否安装成功

    0x2 备份服务器环境搭建

    0x2.1 安装 xinetd 和 rsync

    yum install xinetd rsync -y

    0x3 以下内容两台服务器同步操作

    useradd -u 600 zytest 
     passwd zytest    
     zytest
     su - zytest -c 'mkdir /home/zytest/files' ##创建同步目录

    0x4 备份服务器上配置rsyncd

    0x4.1 编辑/etc/xinetd.d/rsync按照以下内容修改

    disable	 = yes  ==> disable	= no
    flags		 = IPv6  ==> flags		= IPv4
    server_args = --daemon ==> server_args = --daemon --config=/etc/rsyncd.conf

    0x4.2 编辑/etc/rsyncd.conf 并添加以下脚本信息

    uid = root
    gid = root
    use chroot = no
    max connections = 1000
    strict mode = yes
    port = 873
    pid file = /var/run/rsyncd.pid 
    lock file = /var/run/rsyncd.lock 
    log file = /var/log/rsyncd.log
    # following for user "zytest", change for other users
    [zytest]
    path = /home/zytest
    ignore errors
    auth users =zytest
    secrets file = /home/rsync-dst.ps
    read only = no
    list = false

    Ps: rsyncd 配置文件在 xinetd上,所以备份服务器安装xinetd

    0x4.3 把密码写入调用的密码文件并赋予权限

    echo zytest:zytest >> /home/rsync-dst.ps
    chmod 600 /home/rsync-dst.ps 

    0x4.4 通过xinetd启动rsync

     /etc/rc.d/init.d/xinetd restart

    0x5 主服务器上配置inosync脚本文件

    0x5.1 ** ##编辑/root/inosync添加脚本代码**

    #!/bin/sh
    #chkconfig: 3 78 10
    
    #This file exist from compile
    if [ ! -f /usr/local/bin/inotifywait ]
    then
     echo "cannot start. file inotifywait NOT exist!"
     exit
    fi
    
    #This file is runnable shell script
    if [ ! -f /usr/local/bin/inosync.so.1 ]
    then
     echo "contact administrator. inosync.so.1 NOT exist!"
     exit
    fi
    
    case "$1" in
     'start')
     /usr/local/bin/inosync.so.1 &
    ;;
    
    'stop')
     pid=`ps -ef | grep -v grep | grep "inotifywait" | awk '{print $2}'`
     kill -9 $pid 2>&1
    ;;
    
    'restart')
     $0 stop
     $0 start
    ;;
    
    esac

    0x5.2 赋予脚本权限,设置开机启动

    chmod a+x /root/inosync
     cp /root/inosync /etc/rc.d/init.d

    0x5.3 配置调用的主脚本文件 /root/inosync.so.1

    rhost=**备份服务器IP**
    user=zytest
    src=/home/zytest/files
    dst=zytest
    #dst corresponding to [zytest] in file /etc/rsyncd.conf on dst server
    log=/root/inosync.log
    /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M:%S' --format '%T %w%f %e' -e close_write,create,move,delete,attrib $src | while read files
     do
     echo == rsync begin == >> $log
     rsync -avP --password-file=/home/rsync-src.ps --delete $src $user@$rhost::$dst >> $log 2>&1
     echo -- rsyncd -- >> $log
     date >> $log
     echo "${files} was rsynced " >> $log 2>&1
     done

    PS: %T后面有空格 %f和%e之间也有空格

    0x5.4 赋予inosync.so.1脚本权限,拷贝到/usr/local/bin

    chmod a+x /root/inosync.so.1
    cp /root/inosync.so.1 /usr/local/bin

    0x5.5 把密码写入调用的密码文件并赋予权限

    echo zytest >> /home/rsync-src.ps
     chmod 600 /home/rsync-src.ps

    0x6 目标服务器设置inosync自动启动并开启inosync服务

    chkconfig --level 3 inosync on
    /etc/rc.d/init.d/inosync start

    0x7 测试 END

    在生产服务器/home/zytest/files目录下创建文件和文件夹,查看备份存储是否也同步了文件和文件夹,同步即成功。

    过程可通过日志查看

    tail -f /root/inosync.log

    总结

    到此这篇关于Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能的文章就介绍到这了,更多相关rsync+inotify实现远程实时同步内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:CentOS8部署LNMP环境之编译安装mysql8.0.29的教程详解
    下一篇:Keepalived实现Nginx负载均衡高可用的示例代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能 Linux,通过,Rsync+Inotify,实现,