前言
rsync常用来做文件传输和同步。本文示例中客户端通过rsync同步服务端的/home/tmp
目录到本地(不是将客户端的文件同步到服务端)。
环境信息
IP | 系统版本 | rsync版本 | 说明 |
192.168.0.10 | CentOS 7.9 | 3.1.2 | 服务端 |
192.168.0.11 | CentOS 7.9 | 3.1.2 | 客户端 |
配置服务端
- 安装相关包
yum install -y rsync xinetd
- 编辑服务配置文件:
/etc/xinetd.d/rsync
。一般不需要修改什么内容。
service rsync { disable = no flags = IPv4 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
- 编辑
/etc/rsyncd.conf
。因为是客户端同步服务端到本地,所以服务端开启只读。如果需要客户端同步本地到服务端,则read_only
的值应该是false
。
uid = root gid = root use chroot = no max connections = 4 strict modes = yes port = 873 [tmptest] path = /home/tmp/ ignore errors read only = yes list = no secrets file = /etc/rsync.pass hosts allow = 192.168.0.0/24 hosts deny = 0.0.0.0/0 pid file = /var/run/rsyncd.pid lock file =/var/run/rsync.lock log file = /var/log/rsyncd.log
- 创建用户密码文件
/etc/rsync.pass
。冒号前面是rsync认证用户,不是系统用户。冒号后面是密码
echo "rsync:123456" > /etc/rsync.pass
- 修改权限
chown root:root /etc/rsync.pass chmod 600 /etc/rsync.pass
- 编辑接入信息文件
/etc/rsyncd.motd
Welcome to use the rsync services!
- 启动
systemctl restart xinetd systemctl restart rsyncd
配置客户端
- 安装rsync
yum install -y rsync
- 创建配置文件,不需要写内容
touch /etc/rsyncd.conf
- 创建密码文件
echo "123456" > /etc/rsync.pass chmod 600 /etc/rsync.pass
- 传输测试。将服务端的
/home/tmp
目录同步到本地当前目录。
rsync -avP rsync@192.168.0.10::tmptest . --password-file=/etc/rsync.pass
如果服务端的read_only
非yes,则可以从客户端传输文件到服务端
rsync -avP test.md rsync@192.168.0.10::tmptest --password-file=/etc/rsync.pass
补充
- 服务端需要关闭selinux,否则可能会出现类似以下的报错
rsync: link_stat "test.txt" (in tmptest) failed: Permission denied (13)