用 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 的价值在于可控:你能精确地知道它复制了什么、删了什么、什么时候跑。
但真正决定备份价值的,是你有没有恢复过它。
留言