暂停永久(硬)删除软删除的对象

如果您需要更多时间来恢复软删除的对象,以免它们被永久删除,则可以暂停 Cloud Storage 存储桶中软删除对象的永久删除(也称为硬删除)。

默认情况下,软删除的对象和存储桶会在达到软删除保留时长后被永久删除。当您暂停存储桶的硬删除时,软删除的对象会无限期地保留在软删除状态,无论其软删除保留时长如何。只有在您恢复对存储桶的硬删除后,软删除的对象才会被永久删除。

使用场景

暂停硬删除可让您有更多时间执行非常大或复杂的对象恢复,否则这些恢复可能需要比软删除保留时长更长的时间才能解决。例如:

  • 恢复包含数十亿个对象的超大存储桶。如果存储桶包含大量对象,则恢复存储桶中的所有对象可能需要比保留时长更长的时间,尤其是在您在保留期限已过一部分后才检测到删除操作时。暂停硬删除有助于您从意外的大规模删除事件中恢复,而无需为日常操作设置更长的保留时长。
  • 删除范围不明确。如果您不确定哪些对象被错误删除,可能需要一些时间进行调查。暂停彻底删除操作可让您有更多时间来确定需要恢复的内容。
  • 复杂恢复。对于复杂的恢复,您可能有时间在保留时长内检测并执行批量恢复。如果这没有产生预期结果,暂停硬删除可以为您提供更多时间来验证您对恢复状态是否满意。

我们建议您采用以下工作流来暂时暂停对存储桶的硬删除。当您检测到可能需要比软删除保留时长更长的时间才能解决的大规模删除突发事件时,请按以下步骤操作:

  1. 如有必要,请恢复存储桶。

  2. 暂停对存储桶执行硬删除。

  3. 恢复存储桶中的对象。

  4. 完成恢复并验证数据已成功恢复后,恢复对存储桶的硬删除。

注意事项

  • 您可以通过更新已启用软删除的现有存储桶来暂停存储桶的硬删除。在创建存储桶期间或对于未启用软删除的存储桶,无法暂停硬删除。
  • 当您恢复存储桶的硬删除时,Cloud Storage 会根据存储桶中所有软删除对象的软删除保留时长,恢复永久删除这些对象。如果有任何对象已超过其保留时长,则在您恢复硬删除时,这些对象将被永久删除。
  • 暂停硬删除会立即生效。缓存的 API 操作可能需要几秒钟才能返回更新后的信息。
  • 当硬删除暂停时,您可以继续删除存储桶中的对象。删除的对象会被软删除。
  • 您最多可以每 24 小时暂停和恢复一次存储桶的硬删除。
  • 您可以在硬删除暂停期间更新软删除保留时长。不过,在硬删除暂停期间,您无法停用软删除。
  • 硬删除暂停时无法删除存储桶。

所需的角色

如需获得暂停或恢复永久删除所需的权限,请让您的管理员为您授予存储桶或包含该存储桶的项目的 Storage Admin (roles/storage.admin) IAM 角色。

此预定义角色包含暂停或恢复硬删除所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需暂停或恢复硬删除,您需要具备以下权限:

  • storage.buckets.update
  • 如果您使用 Google Cloud 控制台执行本页面上的任务:
    • storage.buckets.get
    • storage.buckets.list

如需了解如何授予角色,请参阅为存储桶设置和管理 IAM 政策或管理对项目的访问权限。

暂停硬删除

REST API

JSON API

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

  2. 创建一个包含以下信息的 JSON 文件:

    {
      "softDeletePolicy": {
        "hardDeletePause": {
          "enabled": true
        }
      }
    }
  3. 如需暂停对存储桶的硬删除,请使用 cURL,通过 PATCH Bucket 请求调用 JSON API:

    curl -X PATCH --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME"

    替换以下内容:

    • JSON_FILE_NAME:您在上一步中创建的 JSON 文件的路径。
    • BUCKET_NAME:存储桶的名称。例如 my-bucket。

恢复硬删除

REST API

JSON API

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

  2. 创建一个包含以下信息的 JSON 文件:

    {
      "softDeletePolicy": {
        "hardDeletePause": {
          "enabled": false
        }
      }
    }
  3. 如需恢复对存储桶的硬删除,请使用 cURL,通过 PATCH Bucket 请求调用 JSON API:

    curl -X PATCH --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME"

    替换以下内容:

    • JSON_FILE_NAME:您在上一步中创建的 JSON 文件的路径。
    • BUCKET_NAME:存储桶的名称。例如 my-bucket。

检查存储桶是否暂停了硬删除

存储桶的软删除政策会提供有关硬删除是否已暂停的信息。如需了解检索存储桶软删除政策的步骤,请参阅检查存储桶是否启用了软删除。

后续步骤