POST

用 rsync 把飞牛备份到另一台 NAS

同一个机箱里的 RAID 救不了整机故障。跨设备备份,rsync 是最省事也最可控的方案。

备份的第一条原则是异地、异机。可很多人只做了 RAID 或者快照,都在同一个机箱里——机器一坏,全没了。

两台 NAS 之间做备份,rsync 是最经典的方案:增量传输、只传变化的文件、断点续传、可以完全脚本化。

rsync 适合什么

  • 局域网内两台 NAS 之间同步;
  • 从飞牛推到另一台飞牛/VPS/群晖;
  • 大量文件、只需要增量更新的场景;
  • 需要保留目录结构、权限、时间戳的备份。

不适合:需要版本历史的(那是快照和专用备份软件的活),以及海量小文件的首次全量同步(会很慢)。

前置条件

  • 两台设备网络互通(局域网最省事,外网需要走隧道或者公网 IP);
  • 目标端有 SSH 服务,并且能免密登录;
  • 目标端有足够空间。

配置免密

在飞牛上生成密钥,把公钥放到目标机的授权文件里:

ssh-keygen -t ed25519
ssh-copy-id 用户名@目标IP

之后 ssh 用户名@目标IP 不用输密码就算成功。

一条典型的备份命令

rsync -av --delete \
  --exclude='.Trash' --exclude='#recycle' \
  /mnt/存储空间/资料/ \
  用户名@目标IP:/mnt/备份盘/资料/

几个参数的含义:

  • -a:归档模式,保留权限、时间戳、软链接;
  • -v:显示过程;
  • --delete:让目标端严格镜像源端,删掉源端已删的文件;
  • --exclude:跳过回收站这类目录。

–delete 要特别小心

这个参数让备份目录和源目录保持一致,用好了很清爽,用错了会把备份也删掉。

如果源端目录挂载失败、路径写错、盘掉了,rsync 看到的是「空目录」,加上 --delete 就会把目标端清空。

稳妥的做法:

  • 路径写成绝对路径,别用变量拼;
  • 先 dry-run 看一眼:rsync -av --delete --dry-run ...;
  • 或者干脆不用 --delete,改成保留历史;
  • 更稳妥的是目标端开快照,删了还能找回来。

放进计划任务

用飞牛的计划任务,每天凌晨跑一次,输出重定向到日志:

rsync ... >> /var/log/rsync-backup.log 2>&1

第二天看看日志,有没有报错。

验证比备份更重要

备份做完不做验证,等于没做。建议每隔一段时间:

  • 从备份端随便挑几个文件,实际打开看看;
  • 对比两端的文件数量、总大小;
  • 演练一次恢复:把备份端的整个目录恢复回一个测试目录。

常见的坑

只做同步不做校验:文件传过去了,但内容坏没坏不知道。可以加 -c 让 rsync 按校验和比较,代价是慢很多。

把同步当备份:双向同步会把误删也同步过去。

目标端空间不够:同步跑到一半失败,两边状态都不完整。

备份和源在同一台机器上:硬盘坏了两份一起没。

小结

rsync 的价值在于可控:你能精确地知道它复制了什么、删了什么、什么时候跑。

但真正决定备份价值的,是你有没有恢复过它。

👁 - 次浏览

留言

← 返回首页