注:本文基于rsync-3.1.2-6.el7_6.1编写
1、环境准备
机器 | 用途 |
---|---|
192.168.0.100 | rsync服务端 |
192.168.0.120 | rsync客户端 |
2、服务端配置
- 安装rsync
由于使用CentOS 7系统,因此,rsync已经安装好,如果没安装直接使用yum安装即可,
yum install -y rsync
- 配置rsyncd.conf
[root@CentOS-7-4 /home]# cat /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = false
max connections = 4
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
lock file = /var/run/rsync.lock
transfer logging = yes
[test]
path = /testdir/
auth users = testuser
secrets file = /etc/rsyncd.secrets
read only = false
uid = root
gid = root
其中,
log file即为rsync日志,出现问题的时候查看这个来看报错信息
path即为test模块映射的目录,也就是你上传文件或者同步文件的目录
auth users即为test模块登录用户
secrets file即为存放用户名和密码的文件
read only表示目录是否只读,如果只读,则用户无法上传文件
其余选项可通过man手册查看,
man 5 rsyncd.conf
- 配置用户及密码
上面的配置文件我们制定了密码文件为/etc/rsyncd.secrets,因此我们要在这个文件中添加用户名和密码,
[root@CentOS-7-4 /home]# cat /etc/rsyncd.secrets
testuser:12345678
要注意的是,密码文件的权限不能过大,否则rsync命令会失败,服务端日志中会有如下报错,
secrets file must not be other-accessible (see strict modes option)
因此我们统一将密码文件权限设置为600,
chmod 600 /etc/rsyncd.secrets
- 启动服务
配置完了,直接启动服务即可,
systemctl start rsyncd
3、客户端配置
- 同样需要安装rsync组件
- 配置用户密码
这一点比较坑,因为客户端密码格式和服务端不同,服务端中需要配置用户和密码,但是客户端只需要配置密码,
[root@CentOS-7-2 /home]# cat /etc/rsyncd.secrets
12345678
如果你也和服务端一样配置用户名和密码,服务端中的日志就会一直报密码不匹配,
auth failed on module test from quay.io (192.168.0.100) for testuser: password mismatch
因为它将整个文件内容都当成密码。当然,密码文件权限仍然需要设置为600。
4、常用命令
1、客户端上传文件到服务端
[root@CentOS-7-2 /home]# rsync -avz --progress --password-file=/etc/rsyncd.secrets test.sh rsync://testuser@192.168.0.120/test
sending incremental file list
test.sh
902 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 525 bytes received 35 bytes 1,120.00 bytes/sec
total size is 902 speedup is 1.61
该命令将当前目录下的test.sh文件,通过rsync上传到服务器192.168.0.120中定义的test模块的路径下,以上面配置为例,即上传到/testdir/目录
2、同步服务端目录文件
[root@CentOS-7-2 /home/test]# ls
. ..
[root@CentOS-7-2 /home/test]# rsync -avz --progress --password-file=/etc/rsyncd.secrets rsync://testuser@192.168.0.120/test .
receiving incremental file list
./
test.sh
902 100% 880.86kB/s 0:00:00 (xfr#1, to-chk=0/2)
sent 46 bytes received 548 bytes 1,188.00 bytes/sec
total size is 902 speedup is 1.52
[root@CentOS-7-2 /home/test]# ls
. .. test.sh
该命令将服务器test模块定义的目录,同步到当前目录。
当然也可以同步指定文件,
rsync -avz --progress --password-file=/etc/rsyncd.secrets rsync://testuser@192.168.0.120/test/a/ni.txt .
该命令指定同步test模块对应路径下a目录下的ni.txt文件,即/testdir/a/ni.txt文件到当前目录。
更多特性,可以通过man手册查看,
man 1 rsync