本页面介绍了如何列出、访问、恢复和删除非当前对象,这通常适用于启用了对象版本控制功能的存储桶。
所需权限
控制台
如需使用 Google Cloud 控制台完成本指南,您必须拥有适当的 IAM 权限。如果您要访问的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需权限的列表,请参阅 Google Cloud 控制台的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
命令行
为使用命令行实用程序完成本指南,您必须拥有适当的 IAM 权限。如果您要访问的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需权限的列表,请参阅 gsutil 命令的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
客户端库
如需使用 Cloud Storage 客户端库完成本指南,您必须拥有适当的 IAM 权限。如果您要访问的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供具有必要权限的角色。
除非另有说明,否则客户端库请求通过 JSON API 发出,并且需要 JSON 方法的 IAM 权限中列出的权限。如需查看使用客户端库发出请求时调用了哪些 JSON API 方法,请记录原始请求。
如需查看相关 IAM 角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
REST API
JSON API
如需使用 JSON API 完成本指南,您必须拥有适当的 IAM 权限。如果您要访问的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需的权限列表,请参阅 JSON 方法的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
列出非当前对象版本
如需列出对象的当前版本和非当前版本,并查看它们的 generation
编号,请执行以下操作:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击存放所需对象的存储桶的名称。
此时会打开“存储桶详情”页面,其中对象标签页已选中。
导航到可能位于文件夹中的对象。
点击所需对象的名称。
此时会打开“对象详情”页面,其中实时对象标签页已选中。
点击版本记录标签页。
命令行
gcloud
使用 gcloud storage ls --all-versions
命令:
gcloud storage ls --all-versions gs://BUCKET_NAME
其中 BUCKET_NAME
是相关存储桶的名称,例如 my-bucket
。
响应如下例所示:
gs://BUCKET_NAME/OBJECT_NAME1#GENERATION_NUMBER1 gs://BUCKET_NAME/OBJECT_NAME2#GENERATION_NUMBER2 gs://BUCKET_NAME/OBJECT_NAME3#GENERATION_NUMBER3 ...
gsutil
使用 gsutil ls -a
命令:
gsutil ls -a gs://BUCKET_NAME
其中 BUCKET_NAME
是相关存储桶的名称,例如 my-bucket
。
响应类似如下示例:
gs://BUCKET_NAME/OBJECT_NAME1#GENERATION_NUMBER1 gs://BUCKET_NAME/OBJECT_NAME2#GENERATION_NUMBER2 gs://BUCKET_NAME/OBJECT_NAME3#GENERATION_NUMBER3 ...
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过LIST
Object 请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?versions=true"
其中:
OAUTH2_TOKEN
是您在第 1 步中创建的访问令牌。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
对象非当前版本具有 timeDeleted
属性。
XML API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过GET
Bucket 请求和versions
查询字符串参数调用 XML API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME?versions&list-type=2"
其中:
OAUTH2_TOKEN
是您在第 1 步中创建的访问令牌。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
与不使用 versions
查询参数相比,在使用该查询参数时,GET
请求的结果存在一些差异。具体而言,当您在请求中包含 versions
查询参数时,Cloud Storage 会返回以下信息:
Version
元素(包含每个对象的相关信息)。DeletedTime
元素(包含对象版本成为非当前版本(删除或替换)的时间)。- IsLatest 元素(指示特定对象是否为最新版本)。
- 如果对象列出操作仅列出部分对象(当存储桶中包含许多对象版本时,会发生此情况),则会返回
NextGenerationMarker
元素。在后续请求的generationmarker
查询参数中使用此元素的值,以便从上次的截止点继续。generationmarker
查询参数的使用方式与marker
查询参数相同,用于为非版本化存储桶的列表结果分页。
访问非当前对象版本
如需在执行下载对象、查看其元数据或更新其元数据等任务时使用非当前对象版本,请执行以下操作:
控制台
Google Cloud 控制台不提供对非当前版本的常规访问权限。使用 Google Cloud 控制台时,您只能移动、复制、恢复或删除非当前版本。这些操作是从对象的版本记录列表中执行的。
命令行
gcloud
将非当前版本的
generation
编号附加到对象名称:OBJECT_NAME#GENERATION_NUMBER
其中:
OBJECT_NAME
是非当前版本的名称,例如pets/dog.png
。GENERATION_NUMBER
是非当前版本的世代编号,例如1560468815691234
。
使用第 1 步中的字符串,按照适用于对象当前版本的常规方式继续操作。
gsutil
将非当前版本的
generation
编号附加到对象名称:OBJECT_NAME#GENERATION_NUMBER
其中:
OBJECT_NAME
是非当前版本的名称,例如pets/dog.png
。GENERATION_NUMBER
是非当前版本的世代编号,例如1560468815691234
。
使用第 1 步中的字符串,按照适用于对象当前版本的常规方式继续操作。
REST API
JSON API
将非当前版本的
generation
编号附加到对象的 URI:https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?generation=GENERATION_NUMBER
其中:
BUCKET_NAME
是包含非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是非当前版本的世代编号,例如1560468815691234
。
使用第 1 步中的 URI,按照适用于对象当前版本的常规方式继续操作。
XML API
将非当前版本的
generation
编号附加到对象的 URI:https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?generation=GENERATION_NUMBER
其中:
BUCKET_NAME
是包含非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是非当前版本的世代编号,例如1560468815691234
。
使用第 1 步中的 URI,按照适用于对象当前版本的常规方式继续操作。
恢复非当前对象版本
在 Cloud Storage 中,恢复非当前对象版本意味着创建该版本的副本。执行此操作后,副本会成为当前版本,从而有效地恢复版本。如果已有当前版本并且存储桶启用了对象版本控制,则恢复非当前版本会导致之前存在的当前版本变为非当前版本。
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击存放所需对象的存储桶的名称。
此时会打开“存储桶详情”页面,其中对象标签页已选中。
如需查看已删除的对象,请点击“显示已删除的数据”切换开关。
导航到可能位于文件夹中的对象。
点击所需对象的名称。
此时会打开“对象详情”页面,其中实时对象标签页已选中。
点击版本记录标签页。
点击所需版本的恢复按钮。
此时会打开恢复对象版本窗格。
点击确认。
命令行
gcloud
使用 gcloud storage cp
命令:
gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER gs://BUCKET_NAME/OBJECT_NAME
其中:
BUCKET_NAME
是包含要恢复的非当前版本的存储桶的名称。例如my-bucket
。OBJECT_NAME
是要恢复的非当前版本的名称。例如pets/dog.png
。GENERATION_NUMBER
是要恢复的非当前版本的世代编号,例如1560468815691234
。
如果成功,则响应类似如下示例:
Operation completed over 1 objects/58.8 KiB.
gsutil
使用 gsutil cp
命令:
gsutil cp gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER gs://BUCKET_NAME/OBJECT_NAME
其中:
BUCKET_NAME
是包含要恢复的非当前版本的存储桶的名称。例如my-bucket
。OBJECT_NAME
是要恢复的非当前版本的名称。例如pets/dog.png
。GENERATION_NUMBER
是要恢复的非当前版本的世代编号,例如1560468815691234
。
如果成功,则响应类似如下示例:
Operation completed over 1 objects/58.8 KiB.
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过POST
Object 请求调用 JSON API:curl -X POST \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Length: 0" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/rewriteTo/b/BUCKET_NAME/o/OBJECT_NAME?sourceGeneration=GENERATION_NUMBER"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是包含要恢复的非当前版本的存储桶的名称。例如my-bucket
。OBJECT_NAME
是要恢复的非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是要恢复的非当前版本的世代编号,例如1560468815691234
。
XML API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过PUT
Object 请求调用 XML API:curl -X PUT \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "x-goog-copy-source: BUCKET_NAME/OBJECT_NAME" \ -H "x-goog-copy-source-generation:GENERATION_NUMBER" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是包含要恢复的非当前版本的存储桶的名称。例如my-bucket
。OBJECT_NAME
是要恢复的非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是要恢复的非当前版本的世代编号,例如1560468815691234
。
恢复对象版本后,原始非当前版本仍存在于存储桶中。如果您不再需要非当前版本,可以随后将其删除或配置对象生命周期管理,以便在其符合您指定的条件时将其移除。
删除非当前对象版本
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击存放所需对象的存储桶的名称。
此时会打开“存储桶详情”页面,其中对象标签页已选中。
导航到可能位于文件夹中的对象。
点击所需对象的名称。
此时会打开“对象详情”页面,其中实时对象标签页已选中。
点击版本记录标签页。
选中所需版本对应的复选框。
点击删除按钮。
此时会打开删除版本窗格。
在文本框中输入
delete
,以确认您要删除该对象。点击删除。
命令行
gcloud
使用 gcloud storage rm
命令:
gcloud storage rm gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER
其中:
BUCKET_NAME
是包含要删除的非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是要删除的非当前版本的名称,例如pets/dog.png
。GENERATION_NUMBER
是要删除的非当前版本的世代编号,例如1560468815691234
。
如果成功,则响应类似如下示例:
Operation completed over 1 objects.
gsutil
使用 gsutil rm
命令:
gsutil rm gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER
其中:
BUCKET_NAME
是包含要删除的非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是要删除的非当前版本的名称,例如pets/dog.png
。GENERATION_NUMBER
是要删除的非当前版本的世代编号,例如1560468815691234
。
如果成功,则响应类似如下示例:
Operation completed over 1 objects.
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过DELETE
Object 请求调用 JSON API:curl -X DELETE \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?generation=GENERATION_NUMBER"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是包含要删除的非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是要删除的非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是要删除的非当前版本的世代编号,例如1560468815691234
。
XML API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过DELETE
Object 请求调用 XML API:curl -X DELETE \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?generation=GENERATION_NUMBER"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是包含要删除的非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是要删除的非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是要删除的非当前版本的世代编号,例如1560468815691234
。
后续步骤
- 详细了解对象版本控制,包括一个深度示例。
- 对存储桶启用或停用对象版本控制。
- 了解如何使用对象生命周期管理自动管理对象版本。