管理回收站中的快照

为防止可恢复的快照(即回收站中已删除的标准快照)被永久清除,请在保留期限到期前从回收站恢复该快照。恢复快照后,该快照会成为可用的标准快照,您可以使用它来创建新磁盘。

本文档介绍了如何列出、恢复和删除可恢复的快照。

如需详细了解回收站,请参阅在回收站中保留已删除的资源

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init
  • 设置默认区域和可用区
  • REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。

      安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI

    如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

所需的角色和权限

如需获得管理可恢复快照所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含管理可恢复快照所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

您需要具备以下权限才能管理可恢复的快照:

  • 如需恢复可恢复的快照:针对快照的 compute.recoverableSnapshots.recover 权限
  • 如需查看可恢复快照的相关信息:针对快照的 compute.recoverableSnapshots.get 权限
  • 如需永久删除可恢复的快照:针对快照的 compute.recoverableSnapshots.delete 权限
  • 如需列出项目中的可恢复快照:针对项目的 compute.recoverableSnapshots.list 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

限制

  • 支持的资源: 仅支持标准快照。删除归档快照、即时快照、磁盘和映像后,系统会立即永久清除这些内容。
  • 名称冲突:如果已存在同名的标准快照,并且您未为恢复的快照提供新名称,则恢复快照将失败。如需恢复此类快照,您必须使用 Google Cloud CLI 或 REST 指定一个新名称。
  • 标记持久性:如果从回收站恢复快照,则不会保留在删除快照之前附加到该快照的标记。从回收站恢复快照后,您必须重新添加标签
  • 保留政策变更:对回收站保留政策所做的变更不会应用于现有的可恢复快照,即回收站中现有的已删除标准快照。
  • 按时间表创建的快照:如果您恢复最初按时间表创建的快照,则该快照不再属于相应时间表,并且不会在时间表指定的时长过后自动删除。而是 Compute Engine 无限期保留快照,直到您手动删除快照为止。
  • 客户管理的加密密钥 (CMEK):如果您撤消了用于保护可恢复快照的 CMEK,然后恢复了该快照,那么在恢复密钥之前,您无法使用恢复的快照来创建磁盘。如果您未在保留期限到期之前恢复快照,Compute Engine 会永久删除该快照。
  • 使用前需要恢复:可恢复的快照是只读的。如需使用可恢复的快照创建磁盘,您必须先从回收站中恢复标准快照。

列出可恢复的快照

如需查看项目中的可恢复快照,请使用 Google Cloud 控制台、gcloud CLI 或 REST。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往快照页面。

    转到“快照”页面

  2. 点击回收站

  3. 点击已删除的快照标签页。系统会显示可恢复的快照列表。

每列都会列出有关可恢复快照的详细信息,包括:

  • 名称:可恢复的快照的名称。
  • 原始快照名称:原始标准快照的名称。
  • 快照删除时间:原始标准快照的删除时间。
  • 永久删除时间:Compute Engine 将永久删除可恢复快照的未来时间。

gcloud CLI

如需列出项目回收站中的所有快照,请使用 gcloud beta compute recoverable-snapshots list 命令。如需添加有关每个可恢复快照的其他信息,请使用 --format 标志。

例如,以下命令会列出项目中的每个可恢复快照,并包含有关每个可恢复快照的详细信息:

gcloud beta compute recoverable-snapshots list \
  --project=PROJECT_ID \
  --format="yaml(name, creationTimestamp, purgeTimestamp, originalResource)"

PROJECT_ID 替换为相应项目的 ID。

输出结果是项目中的可恢复快照列表,类似于以下内容:

creationTimestamp: '2026-09-01T11:13:50.716-07:00'
name: data-disk-snapshot-20260805-qlb6lyqw
purgeTimestamp: '2026-09-06T11:13:50.609-07:00'
originalResource:
  ...
  name: data-disk-snapshot-20260805
  ...
  sourceDisk: projects/my-project/global/disks/data-disk
---
creationTimestamp: '2026-09-01T12:13:50.229-07:00'
name: disk-snapshot-20260901191347-s0c24h1m
purgeTimestamp: '2026-09-06T12:13:50.070-07:00'
originalResource:
  ...
  name: disk-snapshot-20260901191347
  ...
  sourceDisk: projects/my-project/global/disks/my-disk
---

输出内容会列出每个可恢复快照的以下关键属性:

  • name:可恢复的快照的名称。如需恢复快照,您必须在使用 gcloud CLI 或 REST 时指定此名称。
  • creationTimestamp:原始标准快照的删除时间。
  • purgeTimestamp:Compute Engine 将永久删除可恢复快照的未来时间。
  • originalResource:一个包含原始快照详细信息的对象,包括其名称和来源磁盘。

REST

构建对 recoverableSnapshots list 方法GET 请求。

    GET https://compute./compute/beta/projects/PROJECT_ID/global/recoverableSnapshots/

PROJECT_ID 替换为相应项目的 ID。

JSON 响应正文包含项目中的可恢复快照列表,如下所示:

{
  "kind": "compute#recoverableSnapshotList",
  "id": "projects/PROJECT_ID/global/recoverableSnapshots/",
  "items": [
    {
      "name": "prod-test-snapshot-20260905053732-uj731vz4",
      "creationTimestamp": "2026-09-05T22:37:34.164-07:00",
      "purgeTimestamp": "2026-09-12T22:37:32.918-07:00",
      ...
      "originalResource": {
        "id": "3004584137782651782",
        "creationTimestamp": "2025-10-05T22:36:41.868-07:00",
        "name": "prod-test-snapshot"
        ...
      }
    },
    {
      "kind": "compute#recoverableSnapshot",
      "id": "8914891425536994162",
      "name": "my-test-snapshot-20260906053732-uj731vz5",
      "creationTimestamp": "2026-09-05T22:37:34.164-07:00",
      "purgeTimestamp": "2026-09-12T22:37:32.918-07:00",
      ...
      "originalResource": {
        "id": "39904584137782651782",
        "creationTimestamp": "2026-08-05T22:36:41.868-07:00",
        "name": "my-test-snapshot"
        ...
      }
    }
  ]
}

输出内容会列出每个可恢复快照的以下关键属性:

  • name:可恢复的快照的名称。如需恢复快照,您必须在使用 gcloud CLI 或 REST 时指定此名称。
  • creationTimestamp:原始标准快照的删除时间。
  • purgeTimestamp:Compute Engine 将永久删除可恢复快照的未来时间。
  • originalResource:一个包含原始快照详细信息的对象,包括其名称和来源磁盘。

按原始快照的名称查找可恢复的快照

如需查找可恢复的快照以便进行恢复,您可以使用原始快照的名称。可恢复的快照具有唯一名称,该名称是您删除原始快照时由 Compute Engine 生成的。

如需查找可恢复的快照的名称,请列出可恢复的快照,并按原始快照名称进行过滤。

您可以使用 Google Cloud 控制台、gcloud CLI 或 REST。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往快照页面。

    转到“快照”页面

  2. 点击回收站

  3. 点击已删除的快照标签页。系统会显示可恢复的快照列表。

  4. filter_list 过滤条件字段中,点击输入属性名称或值。 从属性列表中选择原始快照名称

  5. 字段中输入原始快照名称,然后按 Enter 键。

Google Cloud 控制台会显示可恢复的快照列表,其中包含名称与您输入的名称相符的原始快照。

gcloud CLI

如需按原始快照名称查找可恢复的快照,请使用 gcloud beta compute recoverable-snapshots list 命令。如需按原始快照名称过滤,请为 originalResource.name 属性使用 --filter 标志。

gcloud beta compute recoverable-snapshots list \
--project=PROJECT_ID \
--filter="originalResource.name:ORIGINAL_SNAPSHOT_NAME" \
--format="yaml(name, creationTimestamp, purgeTimestamp)"

将以下变量替换为相应值:

  • PROJECT_ID:项目的 ID。
  • ORIGINAL_SNAPSHOT_NAME:快照的原始名称。

输出是一个可恢复的快照列表,其中包含名称与您输入的原始快照名称相匹配的原始快照,类似于以下内容:

creationTimestamp: '2026-09-01T11:13:50.716-07:00'
name: disk-20260805-09550-us-central1-a-202-20260901181348-qlb6lyqw
purgeTimestamp: '2026-09-06T11:13:50.609-07:00'
---
creationTimestamp: '2026-09-01T12:13:50.229-07:00'
name: disk-20260805-09550-us-central1-a-202-20260901191347-s0c24h1m
purgeTimestamp: '2026-09-06T12:13:50.070-07:00'
---
creationTimestamp: '2026-09-01T13:13:51.060-07:00'
name: disk-20260805-09550-us-central1-a-202-20260901201348-ogybudsu
purgeTimestamp: '2026-09-06T13:13:50.904-07:00'

如需按原始快照的创建或删除时间进行过滤,请扩展 --filter 表达式:

  • 如需按原始快照的创建时间进行过滤,请向 --filter 表达式添加 originalResource.creationTimestamp 的条件。例如,如需查找在特定时间当天或之后创建的原始快照的可恢复快照,请执行以下操作:
  --filter="originalResource.creationTimestamp >= 'CREATION_FILTER_TIMESTAMP' AND originalResource.name:ORIGINAL_SNAPSHOT_NAME"

替换以下内容:

  • ORIGINAL_SNAPSHOT_NAME:原始快照的名称。
  • CREATION_FILTER_TIMESTAMP:过滤条件的时间戳,例如 2026-09-01T10:00:00。时间戳采用本地时间。

  • 如需按原始快照的删除时间进行过滤,请向 --filter 表达式添加 creationTimestamp 条件。例如,如需查找在特定时间或之后删除的特定原始快照的可恢复快照,请执行以下操作:

  --filter="creationTimestamp >= 'DELETION_FILTER_TIMESTAMP' AND originalResource.name:ORIGINAL_SNAPSHOT_NAME"

替换以下内容:

  • ORIGINAL_SNAPSHOT_NAME:原始快照的名称。
  • DELETION_FILTER_TIMESTAMP:过滤条件的时间戳,例如 2026-09-01T10:00:00。时间戳采用本地时间。

REST

使用 filter 查询参数构建对 recoverableSnapshots.list 方法GET 请求。

GET 'https://compute./compute/beta/projects/
PROJECT_ID/global/recoverableSnapshots?filter=originalResource.name:ORIGINAL_SNAPSHOT_NAME'

将以下变量替换为相应值:

  • PROJECT_ID:项目的 ID。
  • ORIGINAL_SNAPSHOT_NAME:快照的原始名称。

响应正文是一个可恢复的快照列表,其中的原始快照名称与您输入的原始快照名称相匹配,类似于以下内容:

{
  "kind": "compute#recoverableSnapshotList",
  "id": "projects/PROJECT_ID/global/recoverableSnapshots/",
  "items": [
    {
      "kind": "compute#recoverableSnapshot",
      "id": "8914891425536994161",
      "name": "prod-test-snapshot-20261006053732-uj731vz4",
      "creationTimestamp": "2026-10-05T22:37:34.164-07:00",
      "purgeTimestamp": "2026-10-12T22:37:32.918-07:00",
      ...
      "originalResource": {
        "name": "prod-test-snapshot",
        ...
      }
    }
  ]
}

items 数组中的每个对象都表示一个可恢复的快照,并具有以下属性:

  • name:可恢复的快照的名称。如需恢复快照,您必须在使用 gcloud CLI 或 REST 时指定此名称。
  • creationTimestamp:原始标准快照的删除时间。
  • purgeTimestamp:Compute Engine 将永久删除可恢复快照的未来时间。
  • originalResource:一个包含原始快照详细信息的对象,包括其名称和来源磁盘。

查看有关可恢复快照的信息

如需检索有关可恢复快照的详细信息(例如来源快照或创建时间),请使用 Google Cloud 控制台、gcloud CLI 或 REST。

如果您只有原始快照名称,但想查找可恢复快照的名称,请参阅查找可恢复快照的名称

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往快照页面。

    转到“快照”页面

  2. 点击回收站

  3. 已删除的快照标签页上,查看可恢复的快照的列表。

  4. 每列都会列出有关可恢复快照的详细信息,包括以下内容:

    • 名称:可恢复的快照的名称。
    • 原始快照名称:原始标准快照的名称。
    • 快照删除时间:原始标准快照的删除时间。
    • 永久删除时间:Compute Engine 将永久删除可恢复快照的未来时间。

gcloud CLI

如需查看可恢复快照的相关信息,请使用 gcloud beta compute recoverable-snapshots describe 命令

gcloud beta compute recoverable-snapshots describe RECOVERABLE_SNAPSHOT_NAME \
--project=PROJECT_ID

将以下变量替换为相应值:

  • RECOVERABLE_SNAPSHOT_NAME:可恢复快照的名称。
  • PROJECT_ID:项目的 ID。

输出是可恢复快照的说明,类似于以下内容:

  creationTimestamp: '2026-09-01T13:13:51.626-07:00'
  id: '2573728532034916112'
  kind: compute#recoverableSnapshot
  name: prod-test-snapshot-uj731vz4
  originalResource:
      name: prod-test-snapshot
      ...
      storageBytesStatus: UP_TO_DATE
      storageLocations:
      - us
  purgeTimestamp: '2026-09-06T13:13:51.493-07:00'
  selfLink: ..
  status: READY

输出包括可恢复快照的以下关键属性:

  • name:可恢复的快照的名称。如需恢复快照,您必须在使用 gcloud CLI 或 REST 时指定此名称。
  • creationTimestamp:原始标准快照的删除时间。
  • purgeTimestamp:Compute Engine 将永久删除可恢复快照的未来时间。
  • originalResource:一个包含原始快照详细信息的对象,包括其名称和来源磁盘。

REST

如需查看可恢复快照的相关信息,请向 recoverableSnapshots.get 方法发出 GET 请求。

GET 'https://compute./compute/beta/projects/PROJECT_ID/global/recoverableSnapshots/RECOVERABLE_SNAPSHOT_NAME'

将以下变量替换为相应值:

  • PROJECT_ID:包含可恢复快照的项目的 ID。
  • RECOVERABLE_SNAPSHOT_NAME:可恢复快照的名称。

响应类似于以下示例:

  {
    "name": "prod-test-snapshot-uj731vz4",
    "creationTimestamp": "2026-09-05T22:37:34.164-07:00",
    "purgeTimestamp": "2026-09-12T22:37:32.918-07:00",
    ...
    "originalResource": {
        "name": "prod-test-snapshot",
        ...
    }
  }

响应正文包含可恢复快照的以下关键属性:

  • name:可恢复的快照的名称。如需恢复快照,您必须在使用 gcloud CLI 或 REST 时指定此名称。
  • creationTimestamp:原始标准快照的删除时间。
  • purgeTimestamp:Compute Engine 将永久删除可恢复快照的未来时间。
  • originalResource:一个包含原始快照详细信息的对象,包括其名称和来源磁盘。

恢复已删除的快照

在恢复快照之前,请考虑以下事项:

  • 标记持久性:如果从回收站恢复快照,则不会保留在删除快照之前附加到该快照的标记。从回收站恢复快照后,您必须重新添加标签
  • 按时间表创建的快照:如果您恢复最初按时间表创建的快照,则该快照不再属于相应时间表,并且不会在时间表指定的时长过后自动删除。Compute Engine 会无限期保留快照,直到您手动删除该快照为止。
  • 名称冲突:如果已存在同名的标准快照,并且您未为恢复的快照提供新名称,则恢复快照会失败。如需恢复此类快照,您必须使用 Google Cloud CLI 或 REST 指定一个新名称。
  • 可恢复的快照在恢复后仍会保留:恢复快照不会从回收站中删除可恢复的快照。可恢复的快照会一直保留在回收站中,直到保留期限到期。
  • 恢复的快照的新创建时间:恢复快照时,标准快照的创建时间是您从回收站恢复快照的时间,而不是快照最初的创建时间。

从回收站恢复快照

如需恢复已删除的快照,以便您可以使用该快照创建新磁盘,您必须先找到可恢复的快照的名称。为此,请按照查找可恢复快照的名称中的说明操作。

如果您知道可恢复的快照的名称,可以使用 Google Cloud 控制台、gcloud CLI 或 REST 恢复该快照。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往快照页面。

    转到“快照”页面

  2. 点击回收站

  3. 点击已删除的快照标签页。系统会显示可恢复的快照列表。

  4. 选择要恢复的快照。

  5. 点击 restore_from_trash 恢复

gcloud CLI

如需恢复快照,请使用 gcloud beta compute recoverable-snapshots recover 命令

  • 如需恢复快照并保留其原始名称,请执行以下操作:

    gcloud beta compute recoverable-snapshots recover \
      RECOVERABLE_SNAPSHOT_NAME \
      --project=PROJECT_ID
    

    将以下变量替换为相应值:

    • RECOVERABLE_SNAPSHOT_NAME:可恢复的快照的名称。
    • PROJECT_ID:项目的 ID。
  • 如需恢复快照并为恢复的快照指定新名称,请使用 --snapshot-name 标志指定新名称。

    gcloud beta compute recoverable-snapshots recover \
    RECOVERABLE_SNAPSHOT_NAME \
    --project=PROJECT_ID \
    --snapshot-name=NEW_SNAPSHOT_NAME
    

    将以下变量替换为相应值:

    • RECOVERABLE_SNAPSHOT_NAME:可恢复快照的名称。
    • PROJECT_ID:项目的 ID。
    • NEW_SNAPSHOT_NAME:恢复的快照的新名称。

REST

如需恢复快照,请向 recoverableSnapshots.recover 方法发出 POST 请求。

POST https://compute./compute/beta/projects/PROJECT_ID/global/recoverableSnapshots/RECOVERABLE_SNAPSHOT_NAME/recover

将以下变量替换为相应值:

  • PROJECT_ID:项目的 ID。
  • RECOVERABLE_SNAPSHOT_NAME:可恢复快照的名称。

如需恢复快照并为恢复的快照指定新名称,请在请求正文中通过 snapshotName 字段指定新名称:

{
  "snapshotName": "NEW_SNAPSHOT_NAME"
}

NEW_SNAPSHOT_NAME 替换为恢复的快照的新名称。

如需通过恢复的快照创建磁盘,请参阅通过快照创建磁盘

如需添加附加到原始标准快照的标记,请参阅向资源添加标记

删除可恢复的快照

您可以使用 Google Cloud 控制台、gcloud CLI 或 REST 在保留期限到期前从回收站永久删除快照。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往快照页面。

    转到“快照”页面

  2. 点击回收站

  3. 已删除的快照标签页中,选择要永久删除的快照。

  4. 依次点击删除 永久删除

gcloud CLI

如需永久删除可恢复的快照,请使用 gcloud beta compute recoverable-snapshots delete 命令

gcloud beta compute recoverable-snapshots delete RECOVERABLE_SNAPSHOT_NAME \
  --project=PROJECT_ID

将以下变量替换为相应值:

  • RECOVERABLE_SNAPSHOT_NAME:可恢复快照的名称。
  • PROJECT_ID:项目的 ID。

REST

如需永久删除可恢复的快照,请向 recoverableSnapshots.delete 方法发出 DELETE 请求。

  DELETE https://compute./compute/beta/projects/PROJECT_ID/global/recoverableSnapshots/RECOVERABLE_SNAPSHOT_NAME

将以下变量替换为相应值:

  • PROJECT_ID:项目的 ID。
  • RECOVERABLE_SNAPSHOT_NAME:可恢复的快照的名称。

后续步骤