Logo 分享测试

超长标题

测试看看在移动端能自适

还不适配

代码复制按钮

 

好的,我帮你整理一个详细报告,把你整个 rsync 服务器搭建、测试、常见问题及解决方案的过程整理成一篇系统文章。文章结构清晰,便于归档和参考。下面是完整示例:


搭建与调试 Rsync 服务器全过程总结#

本文总结了在多台 Linux 机器上部署和使用 rsync 服务器 的全过程,包括 Docker 部署和原生 Linux 配置,以及客户端同步问题排查和解决方案。


一、部署方式概览#

Rsync 服务器主要有两种部署方式:

  1. Docker 部署
    • 使用 axiom-data-science/rsync-server 源码构建镜像
    • 提供 SSH + rsync daemon 双模式
    • 适合快速测试或局域网内部署
  2. 原生 Linux 系统部署
    • 安装 rsync
    • 编写 /etc/rsyncd.conf 和密码文件 /etc/rsync.password
    • 使用 rsync --daemon 或 systemd 管理服务

二、Docker 部署步骤#

  1. 拉取源码并构建镜像
git clone https://github.com/axiom-data-science/rsync-server.git
cd rsync-server
docker build -t my-rsync-server .
  1. 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
  1. 启动服务
docker compose up -d
  1. 测试同步
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 部署步骤#

  1. 安装 rsync
apt-get install rsync -y
  1. 创建同步目录
mkdir -p /data/backup
  1. 创建密码文件
echo "sync:mypassword" > /etc/rsync.password
chmod 600 /etc/rsync.password
  1. 配置 /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
  1. 启动 rsync daemon
rsync --daemon --config=/etc/rsyncd.conf
  • 使用 ss -tnlp | grep 873 确认监听端口。

四、客户端同步测试#

  1. 客户端密码文件
echo "mypassword" > /root/.rsync.password
chmod 600 /root/.rsync.password
  1. 执行同步命令
rsync -av --password-file=/root/.rsync.password \
  /root/1panel-v2.0.12-linux-amd64.tar.gz \
  sync@服务器IP::backup
  1. 常见问题
  • @ERROR: Unknown module → 模块名错误或 rsyncd.conf 配置未生效
  • @ERROR: auth failed on module → 密码文件权限、格式或用户名错误
  • Connection refused → rsync daemon 未启动或防火墙阻止访问

五、常见问题排查#

问题原因解决方法
Resource temporarily unavailablersync daemon 进程未释放 PID 文件killall rsync && rm -f /var/run/rsyncd.pid
auth failed on module用户名或密码错误,或文件权限不正确检查 /etc/rsync.password 格式为 user:passwordchmod 600
Unknown module模块名在配置中不存在检查 [模块名] 是否正确,客户端同步命令是否一致
Connection refusedrsync 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

七、总结#

  1. Docker 部署:快速搭建,便于测试和局域网同步
  2. 原生部署:系统级常驻,适合生产环境
  3. 客户端同步:需要用户名、密码和模块名匹配
  4. 问题排查
    • PID 文件、权限、密码格式
    • 模块名与路径
    • 防火墙和端口占用
  5. 系统化管理:建议使用 systemd 启动 rsync daemon,保证服务常驻和开机自启

如果你愿意,我可以再帮你 画一张 rsync 客户端-服务器同步流程图,让这篇报告更直观。

你希望我画吗?