为防止可恢复的快照(即回收站中已删除的标准快照)被永久清除,请在保留期限到期前从回收站恢复该快照。恢复快照后,该快照会成为可用的标准快照,您可以使用它来创建新磁盘。
本文档介绍了如何列出、恢复和删除可恢复的快照。
如需详细了解回收站,请参阅在回收站中保留已删除的资源。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
选择标签页以了解您打算如何使用本页面上的示例:
控制台
当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。
gcloud
-
安装 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 Instance Admin (
roles/compute.instanceAdmin) -
如需连接到可以作为服务账号运行的虚拟机:
Service Account User (v1) (
roles/iam.serviceAccountUser)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含管理可恢复快照所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
您需要具备以下权限才能管理可恢复的快照:
-
如需恢复可恢复的快照:针对快照的
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 控制台
在 Google Cloud 控制台中,前往快照页面。
点击回收站。
点击已删除的快照标签页。系统会显示可恢复的快照列表。
每列都会列出有关可恢复快照的详细信息,包括:
- 名称:可恢复的快照的名称。
- 原始快照名称:原始标准快照的名称。
- 快照删除时间:原始标准快照的删除时间。
- 永久删除时间: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 控制台
在 Google Cloud 控制台中,前往快照页面。
点击回收站。
点击已删除的快照标签页。系统会显示可恢复的快照列表。
在 filter_list 过滤条件字段中,点击输入属性名称或值。 从属性列表中选择原始快照名称。
在值字段中输入原始快照名称,然后按 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 控制台
在 Google Cloud 控制台中,前往快照页面。
点击回收站。
在已删除的快照标签页上,查看可恢复的快照的列表。
每列都会列出有关可恢复快照的详细信息,包括以下内容:
- 名称:可恢复的快照的名称。
- 原始快照名称:原始标准快照的名称。
- 快照删除时间:原始标准快照的删除时间。
- 永久删除时间: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 控制台
在 Google Cloud 控制台中,前往快照页面。
点击回收站。
点击已删除的快照标签页。系统会显示可恢复的快照列表。
选择要恢复的快照。
点击 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 控制台
在 Google Cloud 控制台中,前往快照页面。
点击回收站。
在已删除的快照标签页中,选择要永久删除的快照。
依次点击删除 永久删除。
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:可恢复的快照的名称。