“我们有备份"还不是一种恢复能力。一份有用的备份有已知范围、已知新鲜度、一个验证步骤,以及一份确有人实际跑过恢复流程。
定义恢复单元
对静态站点,源码仓库与生成制品用途不同。仓库是权威输入;制品是恢复最近发布版本的最快方式。请把两者的区别说清楚。
至少记录:
- 源码提交或归档标识;
- 生成器与主题版本;
- 制品包含的文件列表;
- 重要下载的校验和;
- 保留期限与存储位置。
不要把凭据、私钥、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"
这条命令刻意很平凡。演练应在事故到来之前,暴露出缺失文件、错误权限或未记录的依赖。
诚实地度量新鲜度
备份日程只有在相对可能丢失的工作量时才有意义。如果源码一个月才变一次,每日快照可能不必要;如果某个资源每小时更新,一次月度归档又不够。
写下目标恢复点与恢复时间,再选择能满足这些目标的存储与检查。当最后一次经过验证的恢复备份已经陈旧时,不要宣称"连续保护”。
来源
- GNU tar manual,归档创建与验证行为,已核验 2026-08-22。
- 静态网站发布检查清单,本地配套资源。