用恢复目标设计备份
先定义 RPO(最多能丢多久数据)和 RTO(多久恢复服务),再选择工具。最低目标是 3-2-1:至少三份数据、两种介质、一份异地;关键系统再增加离线或不可变副本。
| 对象 | 合适方法 | 必须额外保存 |
|---|---|---|
| ZFS 数据集 | snapshot + send/receive | 池布局、加密密钥、保留策略 |
| UFS | dump/restore 或文件级工具 | gpart 分区表、fstab、引导信息 |
| 数据库 | 数据库原生备份/复制 | 版本、WAL/binlog、恢复顺序 |
| 配置 | 受限权限的版本化归档 | /etc、/usr/local/etc、证书与密钥清单 |
| Jail/VM | 应用一致快照或关机副本 | jail.conf/VM 配置、网络与磁盘映射 |
ZFS 发送前的一致性
zfs snapshot zroot/data@backup-20260824
zfs send -nPv zroot/data@backup-20260824
-n 预演,不发送数据。正式 zfs send | zfs receive 前确认目标数据集和加密属性;接收优先落在隔离层级,不直接覆盖生产挂载点。数据库必须先使用其一致性机制。
校验备份
- 检查备份任务退出状态、字节数和时间跨度,而不是只看“最后运行时间”。
- 对归档生成并独立保存 SHA-256;对加密备份验证密钥可用。
- 定期随机恢复文件,并至少每季度恢复完整服务到隔离网络。
- 恢复后检查属主、ACL、稀疏文件、硬链接、扩展属性、数据库一致性和应用健康。
配置与包清单
pkg prime-origins | sort -u > /var/backups/pkg-prime-origins.txt
sysrc -a > /var/backups/rc.conf-effective.txt
gpart backup ada0 > /var/backups/ada0.gpart
ada0 必须替换为已确认的目标磁盘;gpart backup 是只读导出,但文件中设备布局应与主机资产记录关联。不要把密码数据库、私钥或 token 放入无加密的普通 Git。
恢复演练
- 在隔离主机或新数据集准备空目标。
- 从书面恢复手册开始,不依赖原管理员记忆。
- 恢复系统配置、数据和服务依赖,记录耗时与缺失材料。
- 执行业务查询、外部连通、时间、日志和权限检查。
- 销毁演练副本前清除其中的秘密与个人数据。
一次成功恢复比一百次“备份任务成功”更能证明恢复能力。