超长标题
测试看看在移动端能自适
还不适配
代码复制按钮
好的,我帮你整理一个详细报告,把你整个 rsync 服务器搭建、测试、常见问题及解决方案的过程整理成一篇系统文章。文章结构清晰,便于归档和参考。下面是完整示例:
搭建与调试 Rsync 服务器全过程总结#
本文总结了在多台 Linux 机器上部署和使用 rsync 服务器 的全过程,包括 Docker 部署和原生 Linux 配置,以及客户端同步问题排查和解决方案。
一、部署方式概览#
Rsync 服务器主要有两种部署方式:
- Docker 部署
- 使用
axiom-data-science/rsync-server源码构建镜像 - 提供 SSH + rsync daemon 双模式
- 适合快速测试或局域网内部署
- 使用
- 原生 Linux 系统部署
- 安装
rsync包 - 编写
/etc/rsyncd.conf和密码文件/etc/rsync.password - 使用
rsync --daemon或 systemd 管理服务
- 安装
二、Docker 部署步骤#
- 拉取源码并构建镜像
git clone https://github.com/axiom-data-science/rsync-server.git
cd rsync-server
docker build -t my-rsync-server .- Docker Compose 配置示例
version: "3"
services:
rsync:
image: my-rsync-server
container_name: rsync-server
ports:
- "873:873"
- "9022:22"
environment:
USERNAME: "ding"
PASSWORD: "self_PASS_99"
VOLUME: "/data"
RO: "false"
volumes:
- /opt/rsync/data:/data
restart: unless-stopped- 启动服务
docker compose up -d- 测试同步
rsync -av --password-file=/root/rsync.pass \
/root/minio_2025-11-15.tar.gz \
ding@127.0.0.1::volume- 测试成功后,
/opt/rsync/data/下会出现同步文件。 - 注意 Docker 容器端口映射和宿主机防火墙。
三、原生 Linux 部署步骤#
- 安装 rsync
apt-get install rsync -y- 创建同步目录
mkdir -p /data/backup- 创建密码文件
echo "sync:mypassword" > /etc/rsync.password
chmod 600 /etc/rsync.password- 配置
/etc/rsyncd.conf
uid = root
gid = root
use chroot = no
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[backup]
path = /data/backup/
comment = Rsync Backup Files
read only = no
auth users = sync
secrets file = /etc/rsync.password- 启动 rsync daemon
rsync --daemon --config=/etc/rsyncd.conf- 使用
ss -tnlp | grep 873确认监听端口。
四、客户端同步测试#
- 客户端密码文件
echo "mypassword" > /root/.rsync.password
chmod 600 /root/.rsync.password- 执行同步命令
rsync -av --password-file=/root/.rsync.password \
/root/1panel-v2.0.12-linux-amd64.tar.gz \
sync@服务器IP::backup- 常见问题
@ERROR: Unknown module→ 模块名错误或 rsyncd.conf 配置未生效@ERROR: auth failed on module→ 密码文件权限、格式或用户名错误Connection refused→ rsync daemon 未启动或防火墙阻止访问
五、常见问题排查#
| 问题 | 原因 | 解决方法 |
|---|---|---|
Resource temporarily unavailable | rsync daemon 进程未释放 PID 文件 | killall rsync && rm -f /var/run/rsyncd.pid |
auth failed on module | 用户名或密码错误,或文件权限不正确 | 检查 /etc/rsync.password 格式为 user:password 且 chmod 600 |
Unknown module | 模块名在配置中不存在 | 检查 [模块名] 是否正确,客户端同步命令是否一致 |
Connection refused | rsync daemon 未启动或端口被占用/防火墙阻止 | 使用 ss -tnlp 查看监听端口,关闭冲突进程,或允许防火墙放行 873 端口 |
| Docker rsync 服务退出 | 直接前台运行 rsync --daemon | 使用 docker-compose up -d 或 systemd 管理,使其常驻 |
六、让 rsync 常驻运行(推荐 systemd 管理)#
创建 /etc/systemd/system/rsyncd.service:
[Unit]
Description=Rsync Daemon
After=network.target
[Service]
ExecStart=/usr/bin/rsync --daemon --no-detach --config=/etc/rsyncd.conf
PIDFile=/var/run/rsyncd.pid
Restart=always
[Install]
WantedBy=multi-user.target启动并设置开机自启:
systemctl daemon-reload
systemctl enable rsyncd
systemctl start rsyncd
systemctl status rsyncd七、总结#
- Docker 部署:快速搭建,便于测试和局域网同步
- 原生部署:系统级常驻,适合生产环境
- 客户端同步:需要用户名、密码和模块名匹配
- 问题排查:
- PID 文件、权限、密码格式
- 模块名与路径
- 防火墙和端口占用
- 系统化管理:建议使用 systemd 启动 rsync daemon,保证服务常驻和开机自启
如果你愿意,我可以再帮你 画一张 rsync 客户端-服务器同步流程图,让这篇报告更直观。
你希望我画吗?