rsync服务器配置

rsync是Linux下小巧却非常高效的文件同步工具,常被用于文件备份。rsync既可以作为单个命令在本地两个目录之间进行文件同步,也可以应用于CS架构:即在服务器上用rsync的守候进程模式启动一个rsync服务,而其它的客户端主机使用rsync命令,与rsync服务器之间进行同步。

虽然也可以通过samba或者nfs等服务将其它Linux需要同步的目录mount到本地的一个目录,然后使用rsync命令进行本地目录间的同步,但是从效率以及管理方便程度方面考虑,兔大侠并不推荐这种方式。如果是主机之间的同步,首选还是应该是用rsync的守候进程模式。

rsync可以通过yum install rsync或者源代码编译方式来进行安装。不论哪种方式,都只是安装在系统上安装了rsync命令,服务器模式的相关配置只能自己动手。

服务器端配置

需要事先做好文件同步或者备份的规划,准备好文件存贮目录,例如/opt/backup。

  1. 主要配置文件:/etc/rsyncd.conf

    #如果使用rsync默认端口(873),则不需要指定该参数
    port = 8082 
    
    #密码文件,格式为id:passwd
    secrets file = /etc/rsyncd.secrets
    
    #允许列表
    list = yes
    
    #指定运行rsync守候进程的系统帐号
    uid = root
    gid = root
    
    #不允许访问指定目录的上级目录
    use chroot = no
    
    #限制连接数, 0为不限制
    max connections = 10
    
    #日志文件等临时文件,推荐以下配置
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    
    #控制允许访问的客户端地址,可以指定单个地址或者地址段
    hosts allow=192.168.1.1,10.0.0.0/8
    #如果是公网正式服务器,推荐默认禁止所有非允许的主机
    hosts deny=*
    
    #设置超时时间
    timeout = 300
    
    #设置服务器端同步的目录
    #指定ID
    [bak]
    #允许客户端写操作
    read only = no
    comment = Backup Storage
    #指定目录
    path = /opt/backup
    #指定允许操作的用户(是在rsync密码文件中指定的用于认证的用户,并非系统用户,)
    auth users = rsyncman
    
  2. 密码文件:/etc/rsyncd.secrets

    每一行的格式为id:passwd,例如:rsyncman:123

    注意,该文件的权限属性一定要修改为600,否则启动时会报错

  3. 开机自启动脚本:/etc/init.d/rsyncd

    #!/bin/bash
    #
    # rsyncd      This shell script takes care of starting and stopping
    #             standalone rsync.
    #
    # chkconfig: - 99 50
    # description: rsync is a file transport daemon
    # processname: rsync
    # config: /etc/rsyncd.conf
    
    # Source function library
    . /etc/rc.d/init.d/functions
    
    RETVAL=0
    prog="rsync"
    OPTIONS="--daemon -4"
    PPATH="/usr/bin/"
    CFILE="/etc/rsyncd.conf"
    
    start() {
            # Start daemons.
            [ -x $PPATH$prog ] || \
                { echo "FATAL: No such programme";exit 4; }
            [ -f $CFILE ] || \
                { echo "FATAL: config file does not exist";exit 6; }
            echo -n $"Starting $prog: "
            daemon $PPATH$prog $OPTIONS
            RETVAL=$?
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
            echo
            return $RETVAL
    }
    
    stop() {
            # Stop daemons.
            echo -n $"Shutting down $prog: "
            killproc $prog
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
            return $RETVAL
    }
    
    # call the function we defined
    case "$1" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      restart|reload)
            stop
            start
            RETVAL=$?
            ;;
      status)
            status $prog
            RETVAL=$?
            ;;
      *)
            echo $"Usage: $0 {start|stop|restart|reload|status}"
            exit 2
    esac
    
    exit $RETVAL
    

    使用chmod 755 rsyncd 命令,将以上脚本置为可执行。

    #/etc/init.d/rsyncd start,即可以启动rsync服务。

    另外,如果系统启用了iptables防火墙,别忘了开放相应的端口。

客户端使用rsync命令与该服务器的指定目录进行同步。客户端使用rsync命令时,除了指定服务器的参数以外,其它的参数与同步两个目录时所用的参数并没有太大区别。

Share Comments
comments powered by Disqus