Rsync daemon模式

rsync通常用于存储服务器节点内部,存储服务器节点之间文件、文件夹的拷贝和遍历等操作,使用方式大致分为两种:

  1. rsync基本使用

  2. rsync daemon模式使用

这里着重介绍rsync daemon模式,第一种模式网上有好多示例比较简单,rsync daemon模式如果是存储节点之间做数据传输,无需每次输入密码

1. Environment

  • 服务器2台

    Centos7_x86_64( 源服务器)Rsync同步源:10.10.10.21

    Centos7_x86_64(目的服务器)Rsync客户端:10.10.10.36

2. Rsync daemon模式

  • 注意:

    rsync daemon模式分为客户端跟服务端,如果客户端想要使用rsync,服务端必须启动rsync

    使用rsync的daemon模式,一定要分清哪个是客户端,哪个是服务端
    服务端:接收远端同步数据的主机
    客户端:把本地数据发送出去的主机

  • rsync daemon 服务端配置文件 etc/rsyncd.conf,如果没有,需要手动创建

    uid = root
    gid = root
    use chroot = no
    max connections = 200
    timeout = 300
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    ignore errors
    read only = false
    list = false
    auth users = rsync
    secrets file = /etc/rsync.password
    [backup]
    comment = "backup dir by oldboy"
    path = /root/target_backup
    
  • rsync 保存auth users用户列表的用户名和密码文件 /etc/rsync.password

  • 启动rsync daemon

    Centos7

    [Unit]
    Description=fast remote file copy program daemon
    ConditionPathExists=/etc/rsyncd.conf
     
    [Service]
    EnvironmentFile=/etc/sysconfig/rsyncd
    ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS"
     
    [Install]
    WantedBy=multi-user.target
    
  • 常用参数

    port=873   # 指定rsync端口。默认873
    uid = root # rsync服务的运行用户,默认是nobody,文件传输成功后属主将是这个uid
    gid = root # rsync服务的运行组,默认是nobody,文件传输成功后属组将是这个gid
    use chroot = no # rsync daemon在传输前是否切换到指定的path目录下,并将其监禁在内
    max connections = 200 # 指定最大连接数量,0表示没有限制
    timeout = 300         # 确保rsync服务器不会永远等待一个崩溃的客户端,0表示永远等待
    motd file = /var/rsyncd/rsync.motd   # 客户端连接过来显示的消息
    pid file = /var/run/rsyncd.pid       # 指定rsync daemon的pid文件
    lock file = /var/run/rsync.lock      # 指定锁文件
    log file = /var/log/rsyncd.log       # 指定rsync的日志文件,而不把日志发送给syslog
    dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  # 指定哪些文件不用进行压缩传输
     
    ###########下面指定模块,并设定模块配置参数,可以创建多个模块###########
    [bigtera1]        # 模块ID
    path = /vol/bigtera2 # 指定该模块的路径,该参数必须指定。启动rsync服务前该目录必须存在。rsync请求访问模块本质就是访问该路径。
    ignore errors      # 忽略某些IO错误信息
    read only = false  # 指定该模块是否可读写,即能否上传文件,false表示可读写,true表示可读不可写。所有模块默认不可上传
    write only = false # 指定该模式是否支持下载,设置为true表示客户端不能下载。所有模块默认可下载
    list = false       # 客户端请求显示模块列表时,该模块是否显示出来,设置为false则该模块为隐藏模块。默认true
    hosts allow = 10.0.0.0/24 # 指定允许连接到该模块的机器,多个ip用空格隔开或者设置区间
    hosts deny = 0.0.0.0/32   # 指定不允许连接到该模块的机器
    auth users = rsync_backup # 指定连接到该模块的用户列表,只有列表里的用户才能连接到模块,用户名和对应密码保存在secrts file中,
                              # 这里使用的不是系统用户,而是虚拟用户。不设置时,默认所有用户都能连接,但使用的是匿名连接
    secrets file = /etc/rsyncd.passwd # 保存auth users用户列表的用户名和密码,每行包含一个username:passwd。由于"strict modes"
                                      # 默认为true,所以此文件要求非rsync daemon用户不可读写。只有启用了auth users该选项才有效。
    [bigtera2]    # 以下定义的是第二个模块
    path=/vol/storcls-s3
    read only = false
    ignore errors
    comment = anyone can access
    
  • rsync 客户端配置文件 /etc/rsync.password

    <user>:<password>
    # rsync_backup:123.com
    # root:env015439
    # root:UdQHxmZ5
    
  • rsync客户端测试

    rsync --list-only rsync@172.17.37.141::backup --password-file=/etc/rsync.password
     
     
    # auto user: rsync
    # rsync server: 172.17.37.141
    # 模块:backup
    # 客户端访问rsync server密钥