【服务端配置】

  • 系统版本

# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.2 LTS
Release:	18.04
Codename:	bionic
  • 官方文档:https://rsync.samba.org/documentation.html

  • 安装(可能系统已自带)

sudo apt install rsync
  • 创建 /etc/rsyncd.conf 文件,添加如下内容:

max connections = 5
log file = /var/log/rsync.log
lock file = /var/lock/rsyncd.lock
timeout = 300
#charset = GB18030    # 某些情况下避免中文乱码

[share] # 模块名
comment = Public Share
# path为需要同步的文件夹路径
path = /var/test
hosts allow = 192.168.0.0/16
hosts deny = *
read only = no
list = yes
uid = root
gid = root
# 必须和 rsyncd.secrets中的用户名对应
auth users = walker
secrets file = /etc/rsyncd.secrets
  • 关于主机访问控制,allow 比 deny 优先级高,也就是说 rsync 不关注 allow 和 deny 的顺序。如果主机既不在 hosts allow 也不在 hosts deny,则根据默认策略,允许连接。官方文档【hosts allow】一节有详细描述。

# 主机允许列表(空格或逗号分隔),高优先级
hosts allow = 【】
# 主机禁止列表(空格或逗号分隔),低优先级
# 建议总是加上一个*来禁止异常的任何连接
hosts deny = 【】

# 主机的格式有五种: ip、ip/netmask、ip/n、hostname、通配符hostname
  • 创建 /etc/rsyncd.secrets 文件,添加如下内容:

# 配置用户名和密码,密码可以任意设置
walker:test
  • 修改 rsyncd.secrets 文件权限

sudo chmod 600 /etc/rsyncd.secrets
  • 启动 rsync

sudo systemctl start rsync
  • 检查端口,如果端口未被监听,可尝试重启系统

# netstat -anop | grep 873
tcp    0    0 0.0.0.0:873    0.0.0.0:*    LISTEN    929/rsync    off (0.00/0/0)
tcp6   0    0 :::873              :::*    LISTEN    929/rsync    off (0.00/0/0)
  • 设置开机启动

sudo systemctl enable rsync


【客户端测试】

  • 系统版本(Windows 10 x64 1803)

winver
  • 客户端软件版本

cwRsyncServer 4.0.5.0
  • 将服务端文件同步至本地

rsync -cvazu --progress [email protected]::share ./test
# --iconv=locale_charset,remote_charset 某些情况下可避免中文乱码
rsync -cvazu --progress --iconv=UTF-8,GB18030 [email protected]::share ./test
  • 若报以下错误,查看服务器端口是否开放(检查防火墙,重启服务器...)

rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]


【相关阅读】

  • Ubuntu Server 18.04 配置 rsync(xinetd)

  • How to configure rsync as daemon on ubuntu 16.04

  • rsync:重要的安全参数


*** walker ***