使用对象版本控制

本页面介绍了如何设置对象版本控制,并提供了使用对象版本控制的示例。有关此功能的说明,请参阅对象版本控制

设置对象版本控制

以下各节显示了如何使用 gsutil 工具JSON APIXML API 打开和关闭对象版本控制功能。目前,无法使用 Google Cloud Platform Console 控制对象版本控制功能。

启用对象版本控制

要在存储分区上启用对象版本控制,请执行以下操作:

gsutil

使用 gsutil versioning set on 命令,将 [VALUES_IN_BRACKETS] 替换为适当的值:

gsutil versioning set on gs://[BUCKET_NAME]

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个包含以下信息的 .json 文件:
  3. {
      "versioning": {
        "enabled": true
      }
    }
  4. 使用 cURL,通过 PATCH Bucket 请求调用 JSON API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X PATCH --data-binary @[JSON_FILE_NAME].json \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        -H "Content-Type: application/json" \
        "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=versioning"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个包含以下信息的 .xml 文件,并将 [VALUES_IN_BRACKETS] 替换为适当的值:
    <VersioningConfiguration>
      <Status>Enabled</Status>
    </VersioningConfiguration>
  3. 使用 cURL,通过 PUT Bucket 请求和 versioning 查询字符串参数调用 XML API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]?versioning"

启用对象版本控制后,在每次覆盖或删除对象的当前版本时,Cloud Storage 都会创建对象的归档版本

停用对象版本控制

要在存储分区上停用对象版本控制,请执行以下操作:

gsutil

使用 gsutil versioning set off 命令,将 [VALUES_IN_BRACKETS] 替换为适当的值:

gsutil versioning set off gs://[BUCKET_NAME]

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个包含以下信息的 .json 文件:
  3. {
      "versioning": {
        "enabled": false
      }
    }
  4. 使用 cURL,通过 PATCH Bucket 请求调用 JSON API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X PATCH --data-binary @[JSON_FILE_NAME].json \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        -H "Content-Type: application/json" \
        "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=versioning"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个包含以下信息的 .xml 文件,并将 [VALUES_IN_BRACKETS] 替换为适当的值:
    <VersioningConfiguration>
      <Status>Suspended</Status>
    </VersioningConfiguration>
  3. 使用 cURL,通过 PUT Bucket 请求和 versioning 查询字符串参数调用 XML API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]?versioning"

检查是否启用了对象版本控制

要检查存储分区是否启用了对象版本控制,请执行以下操作:

gsutil

使用 gsutil versioning get 命令,将 [VALUES_IN_BRACKETS] 替换为适当的值:

gsutil versioning get gs://[BUCKET_NAME]

如果已启用对象版本控制,您会看到类似如下所示的响应:

gs://[BUCKET_NAME]: Enabled

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 GET Bucket 请求调用 JSON API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X GET -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=versioning"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 GET Bucket 请求和 versioning 查询字符串参数调用 XML API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X GET \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]?versioning"

使用版本化对象

以下各节显示了如何使用版本化对象。如需查看使用对象版本控制的详尽示例,请参阅对象版本控制示例

列出归档对象版本

要列出对象的活动版本和归档版本并查看这些版本的 generation 编号,请执行以下操作:

gsutil

使用 gsutil ls -a 命令,将 [VALUES_IN_BRACKETS] 替换为适当的值:

gsutil ls -a gs://[BUCKET_NAME]

响应类似于以下示例:

gs://[BUCKET_NAME]/[OBJECT_NAME1]#[GENERATION_NUMBER1]
gs://[BUCKET_NAME]/[OBJECT_NAME1]#[GENERATION_NUMBER2]
gs://[BUCKET_NAME]/[OBJECT_NAME1]#[GENERATION_NUMBER3]
...

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 LIST Object 请求调用 JSON API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X GET -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/o?versions=true"

对象的归档版本具有 timeDeleted 属性。

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 GET Bucket 请求和 versions 查询字符串参数调用 XML API ,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X GET -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]?versions"

与不使用 versions 查询参数相比,在使用该查询参数时,GET 请求的结果存在一些差异。具体而言,当您在请求中包含 versions 查询参数时,Cloud Storage 会返回以下信息:

  • Version 元素(包含每个对象的相关信息)。
  • DeletedTime 元素(包含对象的归档(删除或覆盖)时间)。
  • IsLatest 元素(指示特定对象是否为最新版本)。
  • 如果对象列出操作仅列出部分对象(当存储分区中包含许多对象版本时,会发生此情况),则会返回 NextGenerationMarker 元素。在后续请求的 generationmarker 查询参数中使用此元素的值,以便恢复最新进度。generationmarker 查询参数的使用方式与 marker 查询参数相同,用于为非版本化存储分区的列表结果分页。

访问归档对象版本

要访问对象的归档版本,请执行以下操作:

gsutil

  1. 通过将 [VALUES_IN_BRACKETS] 替换为适当的值,将归档对象的 generation 编号附加到对象名称上:

    [OBJECT_NAME]#[GENERATION_NUMBER]
  2. 使用第 1 步中的字符串,按照适用于活动对象的常规方式继续操作。

REST API

JSON API

  1. 通过将 [VALUES_IN_BRACKETS] 替换为适当的值,将归档对象的 generation 编号附加到对象的 URI 上:
    https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/o/[OBJECT_NAME]?generation=[GENERATION_NUMBER]
  2. 使用第 1 步中的 URI,按照适用于活动对象的常规方式继续操作。

XML API

  1. 通过将 [VALUES_IN_BRACKETS] 替换为适当的值,将归档对象的 generation 编号附加到对象的 URI 上:
    https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]?generation=[GENERATION_NUMBER]
  2. 使用第 1 步中的 URI,按照适用于活动对象的常规方式继续操作。

复制归档对象版本

要复制对象的归档版本,请执行以下操作:

gsutil

使用 gsutil cp 命令,将 [VALUES_IN_BRACKETS] 替换为适当的值:

gsutil cp gs://[SOURCE_BUCKET_NAME]/[SOURCE_OBJECT_NAME]#[GENERATION_NUMBER] gs://[DESTINATION_BUCKET_NAME]/[DESTINATION_OBJECT_NAME]

如果成功,则响应类似如下示例:

Operation completed over 1 objects/58.8 KiB.

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 POST Object 请求调用 JSON API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X POST \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        -H "Content-Length: 0" \
        "https://www.googleapis.com/upload/storage/v1/b/[SOURCE_BUCKET_NAME]/o/[SOURCE_OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET_NAME]/o/[NAME_OF_COPY]?sourceGeneration=[GENERATION_NUMBER]"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 PUT Object 请求调用 XML API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X PUT \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        -H "x-goog-copy-source: [SOURCE_BUCKET_NAME]/[SOURCE_OBJECT_NAME]" \
        -H "x-goog-copy-source-generation:[GENERATION_NUMBER]" \
        "https://storage.googleapis.com/[DESTINATION_BUCKET_NAME]/[NAME_OF_COPY]"

删除归档对象版本

要删除对象的归档版本,请执行以下操作:

gsutil

使用 gsutil rm 命令,将 [VALUES_IN_BRACKETS] 替换为适当的值:

gsutil rm gs://[BUCKET_NAME]/[OBJECT_NAME]#[GENERATION_NUMBER]

如果成功,则响应类似如下示例:

Operation completed over 1 objects.

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 DELETE Object 请求调用 JSON API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X DELETE \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/o/[OBJECT_NAME]?generation=[GENERATION_NUMBER]"

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 DELETE Object 请求调用 XML API,将 [VALUES_IN_BRACKETS] 替换为适当的值:
    curl -X DELETE \
        -H "Authorization: Bearer [OAUTH2_TOKEN]" \
        "https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]?generation=[GENERATION_NUMBER]"
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Storage
需要帮助?请访问我们的支持页面