软删除

设置 用法

本页面介绍软删除功能,该功能会将已删除或已覆盖的对象和存储桶保留一段指定的时间。软删除会将已删除的对象或存储桶保留在软删除状态,在该状态下,对象或存储桶无法永久删除,从而有助于保护您的数据免遭意外或恶意删除。默认情况下,所有存储桶都会启用软删除,并且保留时长为 7 天,除非您或您的组织选择了其他政策。

概览

为存储桶启用软删除功能后,删除存储桶或存储桶中的对象会导致相应资源变为软删除状态,而不是永久删除。软删除的对象和存储桶的行为如下:

如需为存储桶启用软删除,您可以创建软删除政策,其中指定保留时长,以控制存储桶及其中的对象在保留多长时间后永久删除。

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

软删除政策

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

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

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

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

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

  • 如果您删除项目,则无法使用软删除来恢复其中的存储桶或对象,即使它们已启用软删除也是如此。为确保您不会因为恶意或意外删除而丢失数据,我们建议您为项目添加安全锁或将业务关键型数据备份到另一个项目中的存储桶,从而限制对项目级删除操作的权限。

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

软删除保留时长

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

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

  • 一天等于 86,400 秒。

  • 一个月等于 31 天,2,678,400 秒。

对于 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 费用和用量接收有关启用或停用软删除的建议和分析洞见。如需了解详情,请参阅软删除 Recommender

后续步骤