关于 rsync
rsync有两种常用的传输方式:rsync-daemon &
over ssh。
rysnc daemon 使用原生的rsync协议,不加密。适用于本地可信网络。
rsync相比ssh占用更低的CPU负载。
某案例:
10TB NAS备份到另外一个 10TB NAS。两者都是 低主频的 1.8Ghz Atoms处理器。开启ssh加密传输,在千兆以太网只能以200-300Mbps的速度传输。使用rsync deamon,传输速度可以达到800Mbps。
参考文档
rsyncd.conf(5) man page (samba.org)
一、架构说明
1. 需求
- 客户端控制同步文件清单
- 免密,限制网段访问
- 客户端在文件同步后,删除过期文件
- 服务器归档目录
/logarchive/
,该目录挂载NFS存储。 - 客户端们同步到归档服务器后,按照IP地址进行子目录区分
2. 拓扑
- 大部分的客户端,在可信网络内,以免密的方式进行数据同步。
- 不在体系管理内的客户端,可以通过over ssh的方式,以命令行方式独立上传数据到服务器。这种情况下,通过系统账户验证,不使用 rsync daemon。
二、rsync daemon配置
系统已经默认安装rsync,就不另行安装了。
1. 配置rsync.conf文件
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:
uid = nobody
gid = nobody
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
# exclude = lost+found/
transfer logging = yes
timeout = 900
# ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
hosts allow = 10.98.0.0/16
log file = /var/log/rsyncd.log
syslog facility = local5
#secrets file = /etc/rsyncd.secrets
reverse lookup = no
[ftp]
path = /logarchive
comment = ftp export area
read only = false
#设置免密,就把 secrets file和auth users注释掉
secrets file = /etc/rsyncd.secrets
auth users = rsync
[test]
path = /logarchive
comment = test area
module name
如上配置文件,以[]
标记的内容,称为module name。
客户端配置访问目的DEST
,设置的就是module name。
免密码设置 & 用户名设置
免密就注释掉 secrets file 和 auth users 配置。
There is no default for the "secrets file" parameter, you must choose a name (such as /etc/rsyncd.secrets). The file must normally not be readable by "other"; see "strict modes". If the file is not found or is rejected, no logins for a "user auth" module will be possible.
读写权限设置 read only
该参数决定客户端是否可以上传文件。如果 read only 设置为 true , 则不可以;如果设置为 false ,则在 daemon侧 规则匹配的条件下可以。默认,所有的 modules 都是 read only。
Note在基于per-user的控制方式下,"auth users" 可以覆盖该设置。
2. 启动服务
systemctl start rsnycd
三、客户端配置
创建密码文件/etc/rsyncd.secrets,比如 rsync:rsync
。
密码文件需要设置为运行用户的640模式。
测试联通性
# 查看modules
[sysadmin@VM_200_2_centos ~]$ rsync rsync@10.98.201.17::
ftp ftp export area
test test area
#查看某个modules
[sysadmin@VM_200_2_centos ~]$ rsync rsync@10.98.201.17::ftp
Password:
drwxrwxrwx 17 2021/12/03 10:54:45 .
drwxrwxr-x 20 2021/12/02 17:17:17 logs
上传文件
[sysadmin@VM_200_2_centos ~]$ rsync -avz ~/logs rsync@10.98.201.17::ftp
Password:
sending incremental file list
logs/
logs/testlog
sent 140 bytes received 47 bytes 34.00 bytes/sec
total size is 0 speedup is 0.00
查看服务器 (同步到服务器后,都是指定的nobody权限)
[sysadmin@VM-201-39-centos /]$ ll /logarchive/
total 0
drwxrwxr-x 2 nobody nobody 20 Dec 2 17:17 logs
免密访问测试
[sysadmin@VM_200_2_centos ~]$ rsync 10.98.201.17::
ftp ftp export area
test test area
[sysadmin@VM_200_2_centos ~]$ rsync 10.98.201.17::ftp
drwxrwxrwx 17 2021/12/03 10:54:45 .
drwxrwxr-x 20 2021/12/02 17:17:17 logs
#免密上传文件,并创建子目录
[sysadmin@VM_200_2_centos ~]$ rsync 1.json 10.98.201.17::ftp
[sysadmin@VM_200_2_centos ~]$ rsync 2.json 10.98.201.17::ftp/subfolder1/
[sysadmin@VM_200_2_centos ~]$
#log归档服务器
[sysadmin@VM-201-39-centos ~]$ ls /logarchive/
1 1.json logs subfolder1
[sysadmin@VM-201-39-centos ~]$ ls /logarchive/subfolder1/
2.json
网友评论