本站包含联盟链接——如果你通过链接注册,我们可能获得佣金。 Affiliate links.

DigitalOcean 快照指南 2026 — 备份和克隆 Droplets

DigitalOcean 快照指南 2026 — 备份和克隆 Droplets

快照是开发人员用于在进行风险变更前存储 Droplets 系统镜像的基本工具,或用于为测试和扩展系统克隆环境。本文解释了快照与备份和自定义镜像的区别、实际定价的计算方式,以及创建、恢复和克隆 Droplets 的真实 doctl 命令方法,这些方法立即可用。

快照与备份和自定义镜像的区别

DigitalOcean 提供三种 Droplet 镜像存储类型,经常令用户困惑:快照、备份(一个独立的自动功能)和自定义镜像,各有不同用途。快照是在特定时间点完整复制 Droplet 的磁盘镜像,由用户通过控制面板、doctl 或 API 按需创建,涵盖该时刻 Droplet 磁盘上的整个操作系统、配置和所有数据文件。它存储在账户中直到手动删除,没有自动过期,既可用于恢复原始 Droplet,也可立即用于创建新 Droplets。 备份是另一个独立功能,必须按 Droplet 启用,系统以 DigitalOcean 设定的间隔(而非用户选择的时间)自动创建备份镜像,并仅根据平台政策存储最新的备份集。它适合基本的"设置后忘记"安全网方式,但不适合需要在特定时间点的快照(例如重大部署前)的情况。此功能会产生独立于常规 Droplet 定价的额外月度费用,启用前应在 DigitalOcean 定价页面上查看。 自定义镜像则不同——将您自己的操作系统镜像文件(如 qcow2、raw、vhdx、vdi 或 iso 格式)上传到您的 DigitalOcean 账户,以部署标准 Marketplace 中不可用的发行版或系统的 Droplets。关键区别在于,自定义镜像不像快照那样从您账户中运行的 Droplets 派生;它们是从外部导入的文件。 简而言之,根据需要选择:如果需要在您控制下的特定时间点的镜像,使用快照;如果需要基本的自动备份且不需要维护,使用备份;如果要导入自己的操作系统,使用自定义镜像。本文主要关注快照,因为这是开发人员可以最细粒度地控制并在实际工作中最频繁使用的功能。

定价:$0.06/GiB 每月

综合多次测试,DigitalOcean 上的 Droplet 快照成本按 $0.06/GiB/月收费,从快照压缩后实际使用的空间计算,而非 Droplet 拥有的完整磁盘大小。例如,一个基础 Droplet 计划 $6/月(1 GiB RAM、1 vCPU、25 GB SSD),如果压缩后磁盘上实际使用的数据约为 10 GiB,快照成本将约为 $0.60/月/单个快照,而非从完整 25 GB SSD 计算。实际数字取决于每个系统的数据量和压缩比,因此应以您账户的计费页面上的真实数字作为主要参考。 需要注意的重要一点是,成本按快照收费。如果您创建多个快照而不删除旧的,即使源 Droplet 已删除,成本也会每月累积,因为快照是独立资源,与 Droplets 的计费完全分离。一个优势是 DigitalOcean 不会对跨多个区域同时使用的快照额外收费,使跨区域 Droplet 迁移通过快照成本为零。 对于定期使用快照的团队,如在每次部署前创建或通过 cron 每天创建,建议从一开始就计划快照删除和创建,因为这是一个经常被忽视并在月度账单中以意外金额出现的成本。通过 doctl compute snapshot list 命令检查您账户中的快照总数,它显示每个快照的大小和创建日期,帮助您决定保留或删除哪些。 注意:本文中的所有价格均参考 DigitalOcean 截至 2026 年 7 月的定价页面。在做出实际使用决定前,始终检查提供商网站上的最新定价,因为云提供商会定期调整定价。

  1. 费率 $0.06/GiB/月根据压缩后的实际空间计算,而非完整磁盘大小
  2. 跨区域使用快照无额外费用
  3. 快照与源 Droplet 有独立计费——删除 Droplet 后您仍需为快照付费
  4. 使用 doctl compute snapshot list 检查快照大小和数量
  5. 价格数据截至 2026 年 7 月;生产使用前检查最新定价页面

手动与自动创建快照

快照创建有三个主要途径:通过控制面板、doctl(DigitalOcean 官方 CLI)和直接 API。对于控制面板,进入目标 Droplet 页面,选择"快照"选项卡,单击"创建快照",并给它一个包含日期和创建原因的有意义的名称。通过 doctl,使用命令 doctl compute droplet-action snapshot 123456 --snapshot-name "web-01-2026-07-17" --wait,将 123456 替换为 Droplet ID(可通过 doctl compute droplet list 查看)。--wait 标志会暂停直到过程完成,使脚本编写更容易。 一个关键的注意事项是,您应在创建快照前关闭 Droplet,特别是对于运行数据库或持续写入文件的 Droplets,因为在 Droplet 运行时创建的快照存在捕获不完整文件系统的风险。尽管 DigitalOcean 允许在运行时创建快照,但事先关闭是能容忍短暂停机时间的工作负载的最安全方法。 关于自动化,DigitalOcean 没有内置的自定义快照计划功能。如果您需要在特定时间(如每晚 2 点)进行自动快照,必须在单独的管理服务器上编写通过 cron 调用 doctl 或 API 的脚本,或通过 DigitalOcean Functions 运行。在管理服务器上的简单 cron 设置如下所示: 0 2 * * * doctl compute droplet-action snapshot 123456 --snapshot-name "auto-$(date +\%Y\%m\%d)" --wait 如果您想要无需手动维护的便利,并可接受不选择确切时间,请改用"备份"功能,通过在 Droplet 页面上切换启用它,这会产生如前所述的额外月度费用。

要点总结: 通过控制面板快照选项卡、doctl 或 API 创建

从快照恢复 Droplet

从快照恢复有两个主要方式,取决于您的目标。第一种是恢复到原始 Droplet,它用快照数据覆盖整个磁盘,同时保持原始 IP 地址和网络配置。通过控制面板上 Droplet 页面选择"备份和快照"选项卡并单击"恢复"进行此操作,或通过 doctl 使用 doctl compute droplet-action restore 123456 --image-id 987654321 --wait,其中 image-id 是快照 ID(可通过 doctl compute snapshot list 查看)。 一个关键的限制是此恢复类型仅适用于从同一 Droplet 创建的快照——您不能将一个快照从另一个 Droplet 恢复到不同的那个。此外,Droplet 必须在开始恢复前关闭;如果仍在运行,系统将自动关闭。在恢复期间,Droplet 无法使用,直到完成,持续时间取决于快照大小。 第二种方法是使用快照作为基础镜像创建完全新的 Droplet,适合于在决定前保持原始 Droplet 和新的并行,或同时想改变区域/大小的情况。这在下一部分介绍。 恢复完成后删除原始 Droplet 前,始终验证系统完全工作,如检查应运行的服务、数据库数据与快照时间框架匹配以及测试外部连接,然后声明系统就绪。跳过验证是恢复后问题的常见原因,只在后来才发现。

使用快照创建新 Droplets(克隆/扩展)

根据我们的实测——除了恢复到原始 Droplet,快照也可作为创建全新 Droplets 的基础镜像,这是一种更灵活的方法,因为您可以独立选择区域、大小(计划)和来自源 Droplet 的其他设置。通过 doctl,使用 doctl compute droplet create web-02 --image 987654321 --region sgp1 --size s-2vcpu-4gb --ssh-keys <fingerprint>,将 987654321 替换为快照 ID 并根据需要选择区域/大小。这适合三个主要真实场景。 第一个场景是为准生产或测试环境克隆 Droplets,精确匹配生产而不从头重建所有内容——简单地快照生产,然后从该快照启动新 Droplet 以立即获得相同环境。第二个是使用预准备的黄金镜像快照进行水平扩展,在流量激增时启动多个 Droplets,比手动设置每次快得多。第三个是跨区域迁移 Droplets,如从远距离区域到 sgp1(新加坡,最接近泰国用户)或 blr1(班加罗尔)作为第二选择,因为普通调整大小只在同一区域内工作但无法跨区域——创建快照和在目标区域启动新 Droplet 是标准方法。 从快照创建新 Droplet 后,验证 SSH 密钥、防火墙规则和 VPC 分配对新 Droplet 设置正确,因为这些并非全部从源自动复制——它们需要手动验证和逐项重新配置后才能用于生产。

何时使用此功能(真实用例)

快照适合需要您控制时间的回滚点的工作负载,而不是作为唯一的备份系统。最常见的实际用例是在风险变更前创建快照:在操作系统版本升级前、部署大型代码变更重构数据库前,或运行修改大型数据集的迁移脚本前。如果出现问题,立即恢复到变更前的点,无需在时间压力下调试。 另一个频繁的情况是为需要相同配置新 Droplets 的团队准备黄金镜像——在模板 Droplet 中一次安装依赖项、调整配置和完成安全加固,快照它,然后将其用作团队中每个新 Droplet 的基础镜像,减少设置时间和环境不一致。 对于克隆环境以在实际生产前测试的团队,如测试安全补丁或事先测试扩展,快照让您模拟生产相同的环境而不影响实时系统。对于灾难恢复规划,快照是策略的一部分,但应与异地备份配对,因为快照留在您的 DigitalOcean 账户中——如果出现账户级问题,它们不会是您的最终备选。 长期仅使用快照作为唯一备份而无需手动保留管理不合适,因为您必须自己编写清理脚本。在那种情况下,自动备份功能或应用级备份工具(如用于数据库的 pg_dump)更合适。

常见错误和解决方案

在实际使用中,第一个常见错误是在运行数据库的 Droplets 仍活跃并持续写入时创建快照,而不事先停止或刷新写入,导致快照处于不完整状态。恢复可能会浮出损坏或不完整的数据库数据。修复方法是在每次快照前尽可能关闭 Droplet,或至少事先执行应用级刷新/同步,如暂时停止数据库服务或使用数据库特定的转储工具。 第二个错误是忘记删除旧的未使用快照,特别是在自动通过 cron 每天创建快照但没有相匹配的清理脚本的团队中,导致成本月复一月地静默累积。修复方法是从一开始就将保留策略脚本与创建脚本一起编写,如仅保留最近 7 个日常快照并在每个 cron 运行中自动删除较旧的。 第三个错误是将快照误解为具有自动轮转和故障警报(如企业备份系统)的完整独立备份解决方案,而实际上快照是需要您自己进行所有管理的基本机制——频率、存储、保留和恢复测试都是您的责任。修复方法是在需要某种自我管理功能时考虑与快照一起使用自动备份。 最后的常见错误是直到真正的紧急情况才测试从快照恢复,然后才发现恢复花费的时间比预期长得多,或现有快照由于未检查的问题实际上无法工作。修复方法是在测试环境中安排季度恢复测试,以确认真实 RTO 数字而不是猜测的,在实际需要恢复时增加信心。

最佳实践

第一个实践是每次都用日期给快照起有意义的名称,使用如 web-01-YYYYMMDD-reason 的模式,以便在许多快照累积时可以轻松找到并决定保留或删除。无意义的默认名称使得后来审查时不可能记住每个快照是什么。 第二个实践是使快照创建对运行数据库或关键状态的 Droplets 保持应用一致,而不仅是基本的关闭。在每次快照前包含步骤以刷新缓存、同步磁盘或暂时停止服务,以保证恢复后的数据完整性。 第三个实践是通过单个脚本自动化创建和删除,从一开始通过 cron 和 doctl/API 使用明确的保留策略,保持日常快照 7 天,同时单独保留预事件快照更长时间——而不是将其作为某人必须记住的手动工作。 第四个实践是始终将快照与其他备份策略一起使用,而不是作为唯一的保护。关键数据也应复制到 DigitalOcean 外,如导出到不同账户或提供商的对象存储,以防止账户级风险。 最后的实践是定期测试恢复并每次记录实际持续时间,以便您的团队知道真实 RTO 数字而不是猜测,并通过 doctl compute snapshot list 定期检查账户中的快照总数,以长期控制成本和资源组织。

领取 $200 免费额度 →

常见问题(FAQ)

DigitalOcean 快照与备份有何不同?
快照是您可以随时按需创建的磁盘镜像,存储到您删除为止。备份是一个独立的自动功能,必须按 Droplet 启用,需要额外费用,按系统确定的间隔创建备份,而不是您选择的时间。
我可以在 Droplet 运行时创建快照吗?
技术上可以,但有不完整数据的风险,特别是对于运行数据库的 Droplets。建议在每次快照前关闭 Droplet 或刷新应用级数据以确保安全。
如果我删除源 Droplet,从它创建的快照会消失吗?
不会。快照是完全独立于源 Droplets 的独立资源。即使删除 Droplet,其快照仍保留在您的账户中,并继续产生费用直到您删除它们。
快照定价是基于完整磁盘大小还是实际使用的数据?
定价基于压缩后实际使用的空间,$0.06/GiB/月,而非 Droplet 拥有的完整 SSD 大小。如果磁盘数据最少,实际成本通常低于预期。
快照可以替代数据库备份吗?
快照可以在某些情况下有所帮助,但不建议作为完整替代。快照在磁盘级工作,而非数据库事务级。对于关键数据,始终与数据库特定工具(如 pg_dump)一起与快照配对。
我可以使用快照在不同区域创建 Droplet 吗?
可以。从快照创建新 Droplet 时,可以自由选择与源 Droplet 不同的目标区域,DigitalOcean 不会对跨区域快照使用额外收费。