zoukankan      html  css  js  c++  java
  • Linux下利用rsync实现多服务器文件同步

    windows做为文件服务器,使用rsync的windows服务版本,然后配置好就可以了。需要的朋友可以参考下。

    windows做为文件服务器,使用rsync的windows服务版本:cwRsyncServer 下载地址:http://rsync.samba.org 

    安装过程要设置用于系统服务的帐号和密码,可以默认。 
    注:此帐号用于启用crsync server服务,需要分配给帐号对要同步文件的相应权限,否则无法操作被同步的文件。 

    目标:多服务器文件同步
     
    环境:2台CentOS5.6
     
    Web端:192.168.20.20
     
    Backup端:192.168.20.21
     
    需要备份目录为:192.168.20.20:/usr/local/web1 /usr/local/web2
     
    第一步:服务器端的配置

    #rpm –qa |grep rsync && rpm –e rsync-** --dodeps

    如果没有的话,则自行下载安装 (yum –y install rsync)

    #cd /usr/local/
     
    # wget http://www.samba.org/ftp/rsync/src-previews/rsync-3.0.6pre1.tar.gz
     
    #tar –zxvf rsync-3.0.6pre1.tar.gz
     
    #cd rsync-3.0.6pre1
     
    #./configure –prefix=/usr/local/rsync 
     
    # make && make install
     
    # vi /etc/rsyncd.conf
    uid = nobody
    gid = nobody
    use chroot = no
    max connections = 4
    pid file = /usr/local/rsync/pid/rsyncd.pid
    lock file = /usr/local/rsync/pid/rsync.lock
    log file = /usr/local/rsync/pid/rsyncd.log
    secrets file=/usr/local/rsync/pwd/rsyncd.pwd
    hosts allow = 192.168.20.0/24
    hosts deny = *
     
    [web1]
    path=/usr/local/web1
    comment = backup web1
    ignore errors
    read only = yes
    #list = no
    auth users = web1
     
    [web2]
    path=/usr/local/web2
    comment = backup web2
    ignore errors
    read only = yes
    #list = no
    auth users = web2

    uid = nobody        //指定文件传输过程中的用户身份
    gid = nobody        //指定文件传输过程中的组身份
     
    log file = /var/log/rsyncd.log        //指定使用独立的日志文件的位置
    pid file = /var/run/rsyncd.pid        //保存pid到指定文件,以便于使用脚本终止进程

    read only = yes        //该目录设置为只读,即只允许客户端下行同步,不允许上传。若需要进行从备份机还原数据,改为no
    rsyncd默认在873端口监听服务,可在客户端使用telnet连接测

    # mkdir -p /usr/local/pid
     
    # mkdir -p /usr/local/pwd
     
    # vi /usr/local/rsync/pwd/rsyncd.pwd
    web1:123456@789
     
    web2:789@123456

    格式为:用户名:密码
     
    设置密码文件仅仅root用户能访问

    #chmod 600 /usr/local/rsync/pwd/rsyncd.pwd
     
    # cp /usr/local/rsync/bin/rsync  /usr/bin/

    在服务器端启动rsync服务

    # rsync –daemon (注意重启kill后要把.pid .lock删掉)

    第二步:备份端的配置
     
    安装rsync软件,同上
     
    设置密码文件只需填写对应密码:

    # touch /usr/local/rsync/web1
     
    # touch /usr/local/rsync/web2
     
    # vi /usr/local/rsync/web1
     
         123456@789
     
    # vi /usr/local/rsync/web2
     
         789@123456

    同时设置为只有root有权限

    # chmod 600 /usr/local/rsync/wbe1

    创建备份目录

    # mkdir -p /usr/local/web1
     
    # mkdir -p /usr/local/web2
     
    # rsync –daemon

    把服务器端文件web1备份到本机(备份机):

    # /usr/bin/rsync -vzrtopg --progress --delete --exclude "logs/" --exclude "conf/ssl.*/" --password-file=/usr/local/rsync/web1 web1@192.168.20.20::web1 /usr/local/web1

    # Web2 也是一样的如上手动进行同步
     
    --delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致, 删除本地目录中多余的文件
     
    -- exclude "logs/" 表示不对/web1/logs目录下的文件进行备份。
     
    --exclude "conf/ssl.*/"表示不对/web1/conf/ssl.*/目录下的文件进行备份。
     
     
     
    如果需要可以放到crontab 计划任务中间隔性的进行同步备份!

    将以上命令写入计划任务,每1分钟执行,即可实现实时同步的效果。 

    注: 
    上面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。-- progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。 

    附,rsync使用时的常见问题: 

    错误1: rsync: read error: Connection reset by peer (104) 
    rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.2] 
    解决:很大可能是服务器端没有开启 rsync 服务。开启服务。 或者开启了防火墙指定的端口无法访问。 

    错误2:@ERROR: chdir failed 
    rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2] 
    解决:服务器端同步目录没有权限,cwrsync默认用户是Svcwrsync。为同步目录添加用户Svcwrsync权限。 

    错误3:@ERROR: failed to open lock file 
    rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2] 
    解决:服务器端配置文件 rsyncd.conf中添加 lock file = rsyncd.lock 即可解决。 

    错误4:@ERROR: invalid uid nobody 
    rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.2] 
    解决:在rsyncd.conf文件中添加下面两行即可解决问题 
    UID = 0 
    GID = 0 

    错误5:@ERROR: auth failed on module test2 
    rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=3.0.2] 
    解决:服务端没有指定正确的secrets file,请在 [test2]配置段添加如下配置行: 
    auth users = coldstar #同步使用的帐号 
    secrets file = rsyncd.secrets #密码文件 

    错误6:password file must not be other-accessible 
    解决:客户端的pass文件要求权限为600, chmod 600 /etc/rsync.pass 即可。

  • 相关阅读:
    C# 中的委托和事件
    SQLserver2000与2005同时安装的问题
    又到毕业时
    WCF服务发布和调用IIS服务
    进销存取项目总结
    URL
    undefined reference to `android::Mutex::lock()'
    关于 ffmpeg ‘UINT64_C’ was not declared in this scope 的错误
    Ti 的 OMX_Core
    linux Perforce 使用
  • 原文地址:https://www.cnblogs.com/keheng/p/3800734.html
Copyright © 2011-2022 走看看