配置rsync daemon模式进行文件同步
rsync
默认使用 TCP 873 端口进行传输,但是否使用该端口,取决于你是通过 rsync daemon 模式(rsync://) 还是通过 SSH 模式(默认端口 22,使用 rsync -e ssh) 进行的同步。
本篇讲解如何启用873端口进行文件传输。
一、服务端配置(监听873端口)
1.安装rsync(大多数系统默认已装)
Debian/Ubuntu:
sudo apt update && sudo apt install rsync
CentOS/Fedora:
sudo yum install rsync
2.创建rsync配置文件 /etc/rsyncd.conf
sudo vim /etc/rsyncd.conf
示例内容(可根据需求修改):
# 全局配置
uid = nfs
gid = nfs
use chroot = no
max connections = 4
timeout = 300
log file = /var/log/rsyncd.log
port = 873# 定义同步模块,类似共享名
[upload_path]path = /home/nfs/upload_pathcomment = Public File Syncread only = nolist = yesauth users = syncusersecrets file = /etc/rsyncd.secrets
3.创建共享目录并设置权限
sudo mkdir -p /home/nfs/upload_path
sudo chown -R nfs:nfs /home/nfs/upload_path
4.创建认证文件 /etc/rsyncd.secrets
sudo vim /etc/rsyncd.secrets
内容格式为:
syncuser:yourpassword
设置文件权限(必须600)
sudo chmod 600 /etc/rsyncd.secrets
5.启动rsync守护进程
sudo rsync --daemon
或通过systemd管理:
sudo systemctl enable rsync
sudo systemctl start rsync
二、客户端使用方式
可以先测一下是否能联通服务端:
rsync rsync://your_server_ip/
如果能返回你的comment信息,则说明没问题。
账号密码访问:
rsync -av /local/dir/ rsync://syncuser@your_server_ip/upload_path/ --password-file=/path/to/password.txt
文件 /path/to/password.txt
只包含一行密码内容:
yourpassword
设置权限:
chmod 600 /path/to/password.txt
三、容易踩坑的几点:
1. 要保证服务端的873端口能被正常访问,可以用以下命令尝试。
telnet your_server_ip 873
如果显示异常,就要看是否和防火墙有关、是否和IT安全组策略有关,等等。
2. 配置文件rsyncd.conf中的uid指向的用户,一定要对path指向的路径有执行权限,不然会导致上传失败
3.出现问题,及时查看/var/log/rsyncd.log,不要做无头苍蝇。