软删除

设置 用法

本页介绍了软删除功能,该功能会将已删除或已覆盖的对象以及包含这些对象的存储分区保留一段指定的时间。软删除功能会将已删除的对象保留在软删除状态,在该状态下,对象无法被永久删除,从而有助于保护您的数据免遭意外或恶意删除。除非您或贵组织选择了其他政策,否则系统会默认为所有存储分区启用软删除,并将保留时长设为 7 天。

概览

为存储桶启用软删除后,从存储桶中删除的对象会进入软删除状态,而不是被永久删除。软删除的对象的行为方式如下:

如需为存储桶启用软删除功能,您需要创建软删除政策,指定保留时长,以控制软删除的对象在永久删除之前保留的时长。

如需了解如何创建和管理软删除政策,以便为存储桶启用或停用软删除功能,请参阅使用软删除

软删除政策

您可以在创建或更新存储桶期间创建、删除或修改软删除政策。创建软删除政策后,您可以使用该政策为存储桶启用或停用软删除。

软删除政策的行为方式如下:

  • 更新存储桶的软删除政策仅适用于您在软删除政策生效后删除的对象。您在更新之前删除的对象会保留它们被删除时生效的时长。

    例如,假设您在存储桶中启用软删除政策,默认保留时长为七天,然后删除对象 cat.png。在此场景中,cat.png 会作为软删除的对象保留七天,然后永久删除。即使您日后更改或移除存储桶的软删除政策,也会发生这种情况。

  • 如果您向现有存储桶添加新的软删除保留时长,则该保留时长不会应用于在软删除政策生效之前删除的任何对象。

  • 如果您删除项目,则无法使用软删除功能恢复其中的存储分区或对象,即使这些存储分区或对象已启用软删除功能也是如此。为确保您在发生恶意或意外删除时不会丢失数据,我们建议您为项目设置安全锁,或将业务关键型数据备份到其他项目中的存储分区,以限制对项目级删除数据的访问权限。

  • 如果删除存储桶,其中的对象不会被永久删除,但无法列出或恢复,除非先恢复被软删除的存储桶。恢复软删除的存储桶后,其中不会包含任何现有对象。您需要执行对象恢复操作或在其中添加新对象。如需详细了解如何使用已软删除的存储桶,请参阅恢复已软删除的存储桶

软删除保留时长

创建存储桶时,系统会向该存储桶添加默认的软删除政策,保留时长为 7 天,这是软删除政策的最短保留时长。如需增强保护力度,您可以选择任意保留时长(最长 90 天)。或者,您也可以将保留时长设置为 0 天,以停用存储桶的软删除功能。

在软删除政策的保留时长内,您可以恢复已删除的对象,但保留时长结束后,Cloud Storage 会永久删除这些对象。软删除保留时长以秒为单位。 不过,某些工具(例如 Google Cloud 控制台Google Cloud CLI)可让您使用其他时间单位设置和查看保留时长。

  • 一天等于 86400 秒。

  • 一个月等于 31 天,2678400 秒。

对于 gcloud CLI,您必须在指定保留期限时指定整数和单位,其中单位可以是 sdm,分别表示秒、天或月。例如,7d43200s 设置保留期限为 7 天 43,200 秒(七天半)。

您可以将保留时长上限设置为 7,776,000 秒(90 天),或者保留时长下限为 604,800 秒(7 天)。使用 REST API 时,您还可以将保留时长设置为值 0,这会停用软删除政策。

恢复行为

恢复软删除对象时,Cloud Storage 会在删除该软删除对象所在的存储桶中创建该对象的副本。 恢复后对象的元数据与删除的对象的元数据相同。软删除保留时长结束后,Cloud Storage 会永久删除软删除的对象。

您可以在软删除保留时长结束之前恢复软删除的对象。

软删除的恢复行为可以描述为:

如果您删除项目,则 Cloud Storage 会永久删除该项目中的所有存储桶和对象。在这种情况下,您无法使用软删除功能恢复对象和存储桶。因此,请务必采取措施限制对项目级删除数据的访问权限,例如为项目设置安全锁,或将业务关键型数据备份到其他项目中的存储桶。

  • 已恢复的对象始终会替换其有效版本:如果对象已有有效版本,则软删除版本会替换有效版本,并且之前存在的有效版本会被软删除。在这种情况下,存储桶会包含以下对象:

    • 被替换的处于软删除状态的现行对象。

    • 之前软删除对象的两个副本(一个现行副本和一个仍为软删除的副本)。

  • 对象副本会一直产生费用,直到被永久删除:对象副本会一直产生存储费用,直到软删除的对象在保留时长结束后被永久删除为止。如需详细了解与已软删除的对象相关的费用,请参阅 Cloud Storage 价格

  • 可以使用多种方法恢复软删除的对象:您可以通过指定对象列表来同步恢复软删除的对象,也可以创建长时间运行的操作来批量恢复在两个时间戳之间删除的对象。

  • 尝试恢复 2024 年 8 月 6 日之前软删除的存储分区会导致显示 The specified bucket does not exist 的错误,您必须与 Cloud Customer Care 团队联系才能执行恢复操作。

恢复和检索启用了分层命名空间的存储分区中对象的元数据

在启用了分层命名空间的 Cloud Storage 存储分区中,可能会出现重复的已软删除对象。重复对象共享相同的 namegeneration 值,这可能会导致恢复期间出现歧义。

重复对象的出现方式

如需了解如何出现具有相同 namegeneration 值的重复对象,请考虑两个对象 folderA/my-object.txtfolderB/my-object.txt,并对这些对象执行以下一系列操作:

  1. 软删除对象 folderA/my-object.txt
  2. 删除对象 folderA/my-object.txt 的父级文件夹 folderA
  3. folderB 重命名为 folderA,之后对象 folderB/my-object.txt 会变为 folderA/my-object.txt
  4. 软删除的对象 folderA/my-object.txt,其 name 与之前删除的对象相同。

Cloud Storage 中对象的每个版本都有一个唯一的 generation 值。但是,如果对象 folderA/my-object.txtfolderB/my-object.txt 是独立创建的,并且彼此没有关联,则它们可能会偶然具有相同的 generation 值。

因此,两个已软删除的对象可能会具有相同的 name (folderA/my-object.txt) 和 generation 值。

为确保您恢复或检索预期的 my-object.txt 对象的元数据(因为现在有两个对象具有相同的 namegeneration 值),您需要提供唯一标识符。

使用 restoreToken 进行唯一对象识别

restoreToken 用于唯一标识您要恢复或检索的正确对象。如需获取 restoreToken 的值,您可以列出存储桶中软删除的对象。如需了解详情,请参阅列出已软删除的对象

注意事项和错误

请注意以下信息,并留意在启用了分层命名空间的存储分区中处理重复的已软删除对象时可能会遇到的潜在错误:

  • 两个不相关的对象具有相同 generation 值的情况极其罕见,而且为了让它们最终也具有相同的 name,需要执行特定的操作序列,这使得这种情况更加罕见。

  • 由于这种情况很少发生,因此对于大多数用例,可能不需要 restoreToken 参数。不过,如果出现具有相同 namegeneration 值的重复软删除对象,您可以使用 restoreToken 进行准确的对象检索。

  • 如果您尝试在不指定 restoreToken 的情况下恢复或检索已软删除对象的元数据,并且有多个对象与指定的 namegeneration 值匹配,则会收到一条错误消息,提示您应指定 restoretoken

  • 如果您尝试通过提供不正确的 restoreTokennamegeneration 值来恢复或检索已软删除对象的元数据,则会收到一条错误消息,指明指定的键不存在。

其他功能注意事项

启用软删除后,它会与其他 Cloud Storage 功能进行以下交互:

  • 对象生命周期管理

    • 对象生命周期管理规则不会影响软删除的对象。您无法使用对象生命周期管理功能更改已软删除对象的存储类别或永久删除这些对象。

    • 由对象生命周期管理功能删除的对象会被软删除。如果您还为存储桶启用了对象版本控制,则删除的现行对象会变为非当前版本,而删除的非当前版本对象会变为已软删除。

  • 对象版本控制

    删除某个非当前对象后,它会被软删除。

  • XML API 分段上传

    XML API 分段上传部分不受软删除保护。

  • Autoclass

    • 系统不会评估软删除对象的 Autoclass 管理费用。

    • Autoclass 不会更改软删除对象的存储类别。

    • 恢复软删除的对象后,生成的对象会设置为 Standard Storage 存储类别。

  • 存储桶锁定对象保留锁定功能

    在对象达到保留政策要求之前,这些功能会阻止您删除对象。然后,软删除会将已删除的对象保留在一个单独的软删除保留时长内,从而提供额外的保护层。

  • Pub/Sub 通知

    恢复对象的软删除版本会触发 OBJECT_FINALIZE 事件。

  • 托管式文件夹:软删除无法恢复托管式文件夹的 IAM 政策。如果您软删除了某个对象并删除了为该对象授予 IAM 政策的托管文件夹,则您可能需要重新创建这些 IAM 政策,然后才能获得恢复软删除对象所需的权限。

  • 标记:如果您创建存储桶时未自行添加软删除设置,则 Cloud Storage 默认设置是创建具有 7 天软删除保留时长的存储桶。您可以通过使用代码更改此默认值。该标记可以将新存储分区的默认保留时长更改为 7 到 90 天之间的任何值,也可以更改默认设置以对新存储分区停用软删除。您也可以使用标记来默认停用软删除。

  • Recommender:您可以启用 Recommender API,以便根据 Cloud Billing 费用和使用情况接收有关启用或停用软删除功能的建议和数据分析。如需了解详情,请参阅软删除建议器

后续步骤