zoukankan      html  css  js  c++  java
  • 两台Linux服务器文件同步

    在给公司或者学校做系统部署的时候,为了数据安全往往我们至少需要两台服务器,接下来请看:

    我们要实现的是把客户端(192.168.0.1)的复制到目标服务器(192.168.0.2)

    一、目标服务器

    1、安装rsync

    yum -y install xinetd rsync
    

    2、修改配置

      vi /etc/xinetd.d/rsync,将yes改成no

    # default: off
    # description: The rsync server is a good addition to an ftp server, as it 
    #       allows crc checksumming etc.
    service rsync
    {
            disable = no
            flags           = IPv6
            socket_type     = stream
            wait            = no
            user            = root
            server          = /usr/bin/rsync
            server_args     = --daemon
            log_on_failure  += USERID
    }
    

       vi /etc/rsyncd.conf增加要同步的目录

    uid=root
    gid=root
    use chroot=no
    max connections=20
    secrets file=/etc/rsync_pass
    pid file=/var/run/rsyncd.pid
    log file=/var/log/rsyncd.log
    
    [backup]
    path=/opt/test
    comment=Rsync share test
    auth users=root
    read only=no
    hosts allow=192.168.0.1
    hosts deny=*
    

       vi /etc/rsync_pass  配置访问的用户名和密码(这里写root)

    root:123456
    

    3、授权并重启服务

    chown root:root /etc/rsync_pass
    chmod 600 /etc/rsync_pass
    chkconfig xinetd on
    service xinetd restart
    

    4、检测873端口在吗(防火墙里需要打开该端口)

    netstat -natp
    

    5、关闭Selinux(永久更改)

    # vi /etc/sysconfig/selinux,将SELINUX=enforcing 修改为SELINUX=disable或者SELINUX=permissive重启服务器

    二、客户端配置

    1、安装rsync(同上)

    2、修改密码文件

       vi /etc/rsync_pass 填写和目标服务器里一样的密码

    123456
    

    3、授权

    chmod 600 /etc/rsync_pass
    

    4、新建客户端备份的文件夹

    mkdir /opt/test/backup
    

    5、安装inotify-tools(实时同步用)

    6、将压缩包inotify-tools-3.14.tar.gz拷贝到你的目录,比如/opt

    7、解压缩

    tar -zxvf inotify-tools-3.14.tar.gz
    

    8、进入目录安装

    cd inotify-tools-3.14
    ./configure
    make&make install
    如果执行有问题 则执行yum install gcc

    9、新建脚本文件inotifyrsync.sh

    #!/bin/bash
    inotify_rsync_fun ()
    {
    dir=`echo $1 | awk -F"," '{print $1}'`
    ip=`echo $1 | awk -F"," '{print $2}'`
    des=`echo $1 | awk -F"," '{print $3}'`
    user=`echo $1 | awk -F"," '{print $4}'`
    /usr/local/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e modify,delete,create,attrib ${dir} | while read DATE TIME DIR FILE
        do
          FILECHAGE=${DIR}${FILE}
          /usr/bin/rsync -av --progress --delete --password-file=/etc/rsync_pass ${dir} ${user}@${ip}::${des} && echo "At ${TIME} on ${DATE}, 
        file $FILECHAGE was backed up via rsync" >> /var/log/rsyncd.log done } count=1 # localdir,host,rsync_module,user of rsync_module, sync1="/opt/ztb/,192.168.0.2,backup,root" ############################################################# #main i=0 while [ ${i} -lt ${count} ] do i=`expr ${i} + 1` tmp="sync"$i eval "sync=$$tmp" inotify_rsync_fun "$sync" & done

    10、授权并执行

    chmod 755 inotifyrsync.sh 
    bash inotifyrsync.sh &

    11、同步测试

    在客户端对应目录新建文件,增删改,看一下目标服务器是否改变。

      人到了一定时候,心里会丢掉一片海,好像那些需要靠岸的日子从未出现过一样

                                            ----里则林

  • 相关阅读:
    前端周刊第一期
    Java CAS 原理详解
    【转载】Linux系统调用SYSCALL_DEFINE详解
    简述伪共享和缓存一致性MESI
    exchange发邮件
    Flutter屏幕适配(自适应)方案
    dart类初始化 future方案
    windows下postgresql自启动
    How can I call an async method in StatelessWidget.build method?
    实战分层架构
  • 原文地址:https://www.cnblogs.com/marshu/p/9935286.html
Copyright © 2011-2022 走看看