普通网友 2025-11-05 09:50 采纳率: 98.6%
浏览 2
已采纳

群晖如何通过rsync备份Linux系统?

如何在群晖NAS上配置rsync实现对Linux系统的定时增量备份?常见问题包括:群晖端rsync服务未启用导致连接失败,Linux客户端使用rsync over SSH时权限或密钥认证配置错误,以及备份路径或排除规则书写不当引发数据遗漏。此外,部分用户因未正确设置crontab计划任务,导致自动备份未能按时执行。需确保群晖共享文件夹权限、rsync模块配置与Linux端命令参数(如-a、-v、--delete)协调一致,方可实现稳定可靠的远程增量备份。
  • 写回答

1条回答 默认 最新

  • The Smurf 2025-11-05 10:29
    关注

    1. 理解rsync与群晖NAS备份架构

    rsync 是 Linux/Unix 系统中广泛使用的文件同步工具,支持本地和远程的增量备份。在群晖 NAS 上启用 rsync 服务后,可作为备份目标接收来自 Linux 客户端的数据。其核心优势在于只传输变化的部分(delta-sync),极大提升效率。

    群晖默认使用 rsync over SSH 或独立的 rsync daemon 模式。对于跨网络、安全要求高的场景,推荐使用 SSH 模式;而局域网内高性能需求则可选用 daemon 模式。

    典型备份流程如下:

    1. Linux 客户端通过 rsync 命令发起连接
    2. 身份认证(密码或 SSH 密钥)
    3. 比对源与目标文件差异
    4. 仅传输变更块
    5. 更新目标目录结构
    # 典型 rsync 增量备份命令示例
    rsync -avz --delete /data/user@nas_ip:/volume1/backup/
    

    2. 启用群晖NAS上的rsync服务

    若未开启 rsync 服务,客户端将无法连接。需登录 DSM 控制面板进行配置:

    • 进入【控制面板】→【终端机和SNMP】
    • 勾选“启用SSH功能”(为后续密钥认证做准备)
    • 切换至【Rsync服务器】标签页
    • 启用“启用rsync服务器”
    • 设置模块名称(如 backup_module)、路径(如 /volume1/backup)
    • 配置允许访问的IP范围或用户权限
    配置项建议值说明
    模块名称linux_backup用于标识该备份通道
    路径/volume1/backup实际存储位置
    允许用户admin需确保账户存在且有写权限

    3. 配置共享文件夹权限与用户权限一致性

    即使 rsync 服务已启动,若目标目录无写入权限,仍会失败。需检查以下几点:

    • 创建专用备份用户(如 backup_user),分配至 administrators 组或赋予特定文件夹读写权限
    • 在【控制面板】→【共享文件夹】中,编辑对应文件夹(如 backup)的权限设置
    • 确保 Linux 客户端使用的用户名映射到 NAS 上具有相应权限的账户

    常见错误提示:“@ERROR: auth failed on module xxx”,通常源于用户认证失败或模块配置错误。

    # 查看群晖端日志定位问题
    sudo synolog_logviewer --module rsync
    

    4. Linux客户端配置SSH密钥免密登录

    避免定时任务中交互式输入密码,必须配置 SSH 公钥认证:

    1. 在 Linux 客户端生成密钥对:ssh-keygen -t rsa -b 2048
    2. 将公钥上传至群晖:ssh-copy-id admin@nas_ip
    3. 测试连接:ssh admin@nas_ip(应无需密码)
    4. 若失败,检查群晖 ~/.ssh/authorized_keys 权限(应为600)

    注意:群晖默认禁用 root 登录,若需以特定用户运行 rsync,应在 /etc/ssh/sshd_config 中调整 PermitRootLogin 或 UsePAM 设置,并重启 SSH 服务。

    5. 编写正确的rsync命令参数

    合理使用参数组合是实现可靠增量备份的关键:

    • -a:归档模式,保留权限、时间戳、符号链接等属性
    • -v:详细输出,便于调试
    • -z:压缩传输数据
    • --delete:删除目标端多余文件,保持镜像一致
    • --exclude:排除临时或日志文件,防止冗余传输
    rsync -avz --delete \
      --exclude='*.tmp' \
      --exclude='/logs/' \
      /source/data/ \
      admin@nas_ip::linux_backup
    

    6. 设计排除规则避免数据遗漏或过度同步

    不恰当的 exclude 规则可能导致关键数据未被备份。建议采用白名单思维:

    • 明确包含需要备份的目录
    • 排除缓存、临时文件、数据库锁文件等非持久化内容
    • 使用绝对路径匹配更精确

    可通过 --dry-run 参数预演同步效果:

    rsync -avz --dry-run --exclude='*.log' /var/www/ user@nas::www_backup
    

    7. 配置crontab实现定时自动执行

    手动执行无法保证持续性,需借助 cron 实现自动化:

    1. 编辑 crontab:crontab -e
    2. 添加计划任务,例如每天凌晨2点执行
    0 2 * * * /usr/bin/rsync -avz --delete /home/user/ admin@nas_ip::user_home >> /var/log/backup.log 2>&1
    

    注意事项:

    • 确保脚本路径正确,环境变量完整
    • 重定向输出以便排查故障
    • 避免高峰时段运行,影响系统性能

    8. 故障排查与日志分析流程图

    当备份失败时,可通过以下流程快速定位问题:

    graph TD A[备份失败] --> B{能否SSH登录?} B -- 否 --> C[检查SSH服务与防火墙] B -- 是 --> D{rsync命令本地测试是否成功?} D -- 否 --> E[检查路径、权限、模块名] D -- 是 --> F{定时任务未执行?} F -- 是 --> G[检查cron服务状态与日志] F -- 否 --> H[查看rsync输出日志] H --> I[修正排除规则或网络问题]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 11月6日
  • 创建了问题 11月5日