VPS 备份:方案、工具与恢复验证
真正的备份不是控制面板里出现一个快照,而是发生故障时能在目标时间内恢复服务。本文说明该备份什么、保存在哪里、如何安排周期,以及如何证明副本可用。

先确定 RPO 与 RTO
RPO 是最多能丢失多长时间的数据,RTO 是业务允许中断多久。静态博客也许接受每日备份,持续接收订单的商店可能需要每小时或持续复制。目标越严格,存储、自动化和演练成本越高。
| 业务 | 可能的 RPO | 恢复重点 |
|---|---|---|
| 静态网站 | 每日或每次发布 | 仓库、构建产物、DNS |
| 内容网站 | 数小时至一天 | 数据库与上传文件一致 |
| 网店/会员系统 | 数分钟至一小时 | 订单、支付状态、队列 |
| 内部开发环境 | 按重建成本确定 | 配置、secret 与数据库 |
具体要保存什么
- 数据库、事务日志以及恢复所需的扩展和版本。
- 用户上传文件、应用数据和持久化 volume。
- 基础设施与部署配置、依赖锁文件和镜像版本。
- DNS、TLS、cron、队列、Web 服务器和防火墙配置。
- 恢复文档、联系人和不存于同一系统的加密密钥。
系统包本身通常可以重装,但自定义改动必须可重现。把缓存、临时文件和可重新生成的构建缓存排除,可降低时间与费用。
3-2-1 原则与账号丢失防护
至少保留三份数据,使用两种不同介质,其中一份位于异地。更重要的是管理边界:如果所有副本都在同一服务商账号中,账号被盗或冻结仍可能全部丢失。异地对象存储应启用版本控制、保留锁与独立凭据。
如何正确备份数据库
数据库必须保持一致性。小型 MySQL/PostgreSQL 可使用官方逻辑 dump;数据大或恢复时间严格时,采用支持在线一致性的物理备份和日志归档。不要在数据库写入时直接复制其数据目录。
dump 后检查退出码、文件大小、校验和,并真正导入测试实例。备份用户权限、扩展、字符集与时区。应用文件和数据库若必须处于同一业务时刻,应暂停写入或使用协调快照。
选择哪些工具
| 工具类型 | 适用场景 | 注意 |
|---|---|---|
| 服务商快照 | 整机快速回滚 | 可能与 VPS 同账号、同故障域 |
| 数据库 dump | 小中型数据库、可移植恢复 | 大库耗时且需验证一致性 |
| restic/borg 等 | 加密、去重、增量文件备份 | 密钥和仓库维护同样重要 |
| 对象存储版本控制 | 异地保存与防误删 | 设置生命周期和不可变策略 |
工具应提供加密、完整性校验、可自动运行和清晰恢复命令。不要选择团队在事故中无法操作的复杂系统。
周期、保留与费用
常见方案是保留若干每日、每周和每月版本,而不是永远保留所有副本。把数据增长、请求费、跨区流量和恢复下载费纳入预算。监控最后成功时间、备份大小突变、存储剩余与过期清理。
恢复验证才是核心测试
- 准备与生产隔离的干净 VPS。
- 从文档取得版本与配置,不复制未知旧文件。
- 下载备份并验证校验和与解密。
- 恢复数据库、文件、权限和 secret。
- 启动应用,测试登录、写入、任务和外部集成。
- 记录实际耗时、缺失步骤并更新 RTO。
只看“备份成功”通知无法证明恢复可行。至少每月抽样恢复,重大升级前后再执行一次。
往往发现得太晚的错误
- 备份留在同一 VPS。磁盘或账号丢失时一起消失。
- 只复制活跃数据库目录。得到不一致文件。
- 从未测试解密密钥。事故时无法读取副本。
- 不监控任务退出码。空文件也被当作成功。
- 没有保留策略。旧副本填满存储。
- 恢复文档只在故障服务器上。最需要时无法访问。
常见问题
VPS 快照算备份吗?
它是备份体系的一部分,适合快速回滚,但若与主机同账号和故障域,不能作为唯一副本。
备份时需要停止网站吗?
静态文件通常不需要;数据库应用应使用一致性工具,或安排短暂写入冻结来同步文件与数据库。
多久测试一次恢复?
至少每月并在重大变更前后测试。高价值业务应更频繁并记录实际恢复时间。
加密密钥保存在哪里?
放在与备份仓库和 VPS 分离的密码管理器或密钥系统中,并确保授权人员可在紧急情况下获取。
