rsync服务器的配置

priority
Updated
Jul 17, 2021 05:48 AM
date
Jan 10, 2018
type
Post
URL
slug
rsync-server
Created
Jun 18, 2021 03:27 AM
status
Published
tags
App
Linux
summary
上一篇文章介绍了rsync的基本概念、命令、和使用,本文将讲解使用rsync服务进行不同机器之间的文件同步。更多文章请参考rsync专题

安装

配置

修改以下配置文件,若不存在则新增即可.
  • 修改/etc/default/rsync
    • RSYNC_ENABLE=inted   #falsetrue或者inted
  • 修改/etc/xinetd.d/rsync
    • 将disable=yes改成disable=no
      service rsync
      {
      	disable = no
      	socket_type = stream
      	wait = no
      	user = root
      	server = /usr/bin/rsync
      	server_args = --daemon
      	log_on_failure += USERID
      }
  • 修改/etc/rsyncd.conf
    • 修改/etc/rsyncd.conf,主要包括账号密码文件路径、同步路径等内容,分为全局配置和模块配置,每个需要同步的文件夹可以配置为一个模块。可以使用rsync --daemon的方式运行守护进程,这里使用xinetd
      #全局配置
      #	= 后面的值可根据自己的实际情况更改
      #	pid file 守护进程pid文件
      #	port 守护进程监听端口,可更改,由xinetd允许rsyncd时忽略此参数
      #	address 守护进程监听ip,由xinetd允许rsyncd时忽略此参数
      #	我们使用xinetd 运行守护进程
      pid file = /usr/local/var/run/rsyncd.pid
      # port = 873
      # address = 192.168.1.2
      #rsyncd 守护进程运行系统用户全局配置,也可在具体的块中独立配置,
      uid = root
      gid = root
      #允许 chroot,提升安全性,客户端连接模块,首先chroot到模块path参数指定的目录下
      #chroot为yes时必须使用root权限,且不能备份path路径外的链接文件
      use chroot = no
      #只读
      read only = no
      #只写
      write only = no
      #允许访问rsyncd服务的ip,ip端或者单独ip之间使用空格隔开
      hosts allow = *
      #不允许访问rsyncd服务的ip,*是全部(不涵盖在hosts allow中声明的ip,注意和hosts allow的先后顺序)
      #hosts deny = *
      #客户端最大连接数
      max connections = 5
      #欢迎文件路径,可选的,在客户端链接成功后会显示欢迎信息
      #motd file = /etc/rsyncd/rsyncd.motd
      #日志相关
      #	log file 指定rsync发送消息日志文件,而不是发送给syslog,如果不填这个参数默认发送给syslog
      #	transfer logging 是否记录传输文件日志
      #	log format 日志文件格式,格式参数请google
      #	syslog facility rsync发送消息给syslog时的消息级别,
      #	timeout连接超时时间
      log file = /usr/local/logs/rsyncd.log
      transfer logging = yes
      log format = %t %a %m %f %b
      syslog facility = local3
      timeout = 300
      
      #模块 模块名称必须使用[]环绕,客户端要访问data1,则地址应该是data1user@address::data1
      [data1]
      #模块根目录,必须指定
      path=/home/test
      #是否允许列出模块里的内容
      list=yes
      #忽略错误
      #ignore errors
      #模块验证用户名称,可使用空格或者逗号隔开多个用户名
      auth users = data1user
      #模块验证密码文件 可放在全局配置里
      secrets file=/etc/rsyncd.secrets
      #注释
      comment = some description about this moudle
      #排除目录,多个之间使用空格隔开
      #exclude = test1/ test2/
  • 配置密码文件
    • 新建密码文件/etc/rsyncd.secrets(与上述文件的secret file一致)
      data1user:password
  • 配置文件授权
    • 密码文件必须赋予600的权限
      chmod 600 /etc/rsyncd.*
  • 启动服务
    • #重启守护进程
      service xinted restart
      #检查是否启动成功
      netstat -an | grep 873
      #显示 tcp6       0      0 :::873                  :::*                    LISTEN

使用

根据上述配置,可以本地建立密码文件pwd.secrets(随便命名),内容为
password
  • 获取远程文件
    • rsync -avz --password-file=pwd.secrets data1user@xxx.xx.xx.xx::data1 /home/data
      上述代码将远程的/home/test/中的内容拷贝至/home/data中,注意:服务器配置文件中path无论是否以/结尾,都不会复制目录本身,只会复制文件夹内的内容
      模块名可以加子目录,data1/subdir 可以复制整个subdir目录,subdir必须是位于配置文件的path指定的目录中
  • 传输本地文件到远程机器
    • rsync -avz --password-file=pwd.secrets /home/data/ data1user@xxx.xx.xx.xx::data1
      本地的data内的文件被传输到/home/test/中。若本地路径写为/home/data没有/,则整个data目录上传至/home/test/
  • 列出远程文件
    • rsync -v --password-file=pwd.secrets rsync://data1user@xxx.xx.xx.xx/data1/
      or
      rsync -v --password-file=pwd.secrets data1user@xxx.xx.xx.xx::data1/

© Song 2015 - 2021