“我们有备份"还不是一种恢复能力。一份有用的备份有已知范围、已知新鲜度、一个验证步骤,以及一份确有人实际跑过恢复流程。

定义恢复单元

对静态站点,源码仓库与生成制品用途不同。仓库是权威输入;制品是恢复最近发布版本的最快方式。请把两者的区别说清楚。

至少记录:

  • 源码提交或归档标识;
  • 生成器与主题版本;
  • 制品包含的文件列表;
  • 重要下载的校验和;
  • 保留期限与存储位置。

不要把凭据、私钥、Cookie 或访问令牌放进网站备份。它们应属于独立的机密管理流程。

存储前先验证

打不开的归档不是备份。一个最小的验证循环如下:

tar -czf site-2026-08-22.tar.gz public/
tar -tzf site-2026-08-22.tar.gz >/dev/null
sha256sum site-2026-08-22.tar.gz > site-2026-08-22.tar.gz.sha256

校验和验证的是被存储的这个文件,并不能证明所有应用层面的假设都正确。这正是为什么仍需要一次恢复演练。

在某个可丢弃的地方恢复

把归档解包到临时目录或隔离主机,然后检查入口点与一个有代表性的资源。不要用覆盖唯一活动副本的方式测试恢复。

restore_dir=$(mktemp -d)
tar -xzf site-2026-08-22.tar.gz -C "$restore_dir"
test -s "$restore_dir/public/index.html"
test -s "$restore_dir/public/404.html"

这条命令刻意很平凡。演练应在事故到来之前,暴露出缺失文件、错误权限或未记录的依赖。

诚实地度量新鲜度

备份日程只有在相对可能丢失的工作量时才有意义。如果源码一个月才变一次,每日快照可能不必要;如果某个资源每小时更新,一次月度归档又不够。

写下目标恢复点与恢复时间,再选择能满足这些目标的存储与检查。当最后一次经过验证的恢复备份已经陈旧时,不要宣称"连续保护”。

来源