选择仓库边界
使用与生产服务器不同的目的地和凭据。客户端加密可以保护存储的副本,但仓库密码或密钥必须私下备份。丢失它可能导致所有加密快照无法使用。
采集一致的数据
使用数据库原生转储或应用支持的快照流程。备份配置、部署说明以及恢复所需的受保护密钥。仅在确定可以重建时排除临时缓存。
让删除变得更难
考虑使用仅追加或不可变的目标位置,使源机器无法擦除所有历史副本。尽可能将保留和清理凭据分开。仅靠加密无法阻止被入侵的服务器删除可写仓库。
安排检查和恢复演练
监控作业退出状态和最近一次良好备份的时间。运行工具支持的仓库完整性检查。定期恢复样本,并在重大应用程序变更后进行完整的恢复演练。
将添加副本与删除历史分开
仅追加目标可让生产服务器添加快照,同时将删除权限保留在另一台受信任的机器上。保留策略仍需仔细审查:伪造的较新快照可能破坏某些基于日历的选择策略。查看工具指南,运行保留策略试运行并监控容量。Restic 的 forget 操作选择快照;prune 删除未被引用的已存储数据。
- 将仓库维护凭据与生产机器隔离
- 在允许删除前先执行保留策略试运行
- 每次恢复演练都使用新的空目标
restic check
restic snapshots
restic restore latest --target /srv/restore-drill官方文档:Restic 保留与修剪
带通过条件的恢复演练
选择一个现实的故障场景:删除的文件、丢失的数据库或整机重建。恢复到单独目录或隔离主机。验证文件内容、权限以及应用程序使用它们的能力。记录耗时以及运行手册中缺失的任何手动步骤。仓库检查确认的是与应用程序成功恢复不同的属性。
- 首次测试时不要在生产应用上直接恢复
- 确认加密凭据可独立恢复
- 如果最新成功备份超过恢复目标,则发出警报
在选择排除项之前构建恢复清单
列出无法通过重装软件包重建的内容:数据库内容、上传文件、应用配置、签名或加密密钥以及部署版本。在每一项旁记录一致性方法。数据库转储属于某个确定的时间点;复制繁忙的数据库目录可能产生不同结果。将仓库访问权限、其口令以及任何 Borg 密钥导出保存在单独的私有恢复位置。在将其作为唯一恢复副本之前,测试替换机器能否打开该仓库。
- 说明恢复点目标:可能丢失多少近期工作。围绕该要求设置计划。
- 说明恢复时间目标:重建可能耗时多久。在演练中包含数据库导入和 DNS 变更。
- 检查原本针对缓存的排除规则是否也移除了上传文件、容器卷或受保护的配置。
- 请使用已安装的 Borg 主版本的文档;仓库格式和命令并非在所有版本之间通用。
官方文档:Borg:加密、一致性与恢复
检查存储的数据以及仓库元数据
Restic的默认仓库检查和通读验证承担不同工作。安排数据验证时需考虑其带宽和运行时间成本。示例检查了已定义的五分之一包文件;后续计划检查必须使用其余分数以覆盖整个仓库。随机选择的子集无法提供相同的覆盖保证。这两种操作都不能证明应用能用恢复的数据启动。
restic check --read-data-subset=1/5
restic snapshots --host example-host
restic restore latest --host example-host --target /srv/restore-drill官方文档:restic:仓库检查与数据验证
让维护工作不受已失陷客户端的控制
Borg 仅追加存储会保留已提交的段数据,但客户端仍可更改可见的归档列表;恢复和压缩需要按文档执行管理流程。将远程备份凭据限制为 Borg 的服务器命令,而非可能绕过这些保护的无限制 shell 或文件系统登录。使用 restic 时,请查阅仅追加保留的 keep-within 指南。在进行任何可能删除历史的维护之前,请检查仓库健康状况并在受信任的机器上预览选择。
- 监控最近一次成功副本的时间、仓库增长、缓存空间以及两端的可用容量。
- 如果恢复失败,在尝试修复或清理之前保留原始仓库和日志。
- 如果任务成功但预期文件缺失,请在更改保留策略前检查归档内容和排除模式。
- 通过在隔离环境中打开文件并运行应用检查来完成演练;将生产目标排除在恢复命令之外。
官方文档:Borg:仅追加操作与维护 · restic:保留策略与仅追加考量