用恢复目标设计备份

先定义 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。

恢复演练

  1. 在隔离主机或新数据集准备空目标。
  2. 从书面恢复手册开始,不依赖原管理员记忆。
  3. 恢复系统配置、数据和服务依赖,记录耗时与缺失材料。
  4. 执行业务查询、外部连通、时间、日志和权限检查。
  5. 销毁演练副本前清除其中的秘密与个人数据。

一次成功恢复比一百次“备份任务成功”更能证明恢复能力。