软删除

设置 用法

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

概览

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

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

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

软删除政策

默认情况下,所有新创建的存储桶都会启用软删除功能。您可以修改软删除政策,为存储桶启用或停用软删除。您可以在创建或更新存储桶的请求期间设置、删除或修改软删除政策。

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

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

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

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

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

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

软删除保留时长

在软删除政策的保留时长内,您可以恢复已删除的对象或存储桶,但在保留时长结束后,Cloud Storage 会永久删除软删除的资源。

创建存储桶时,系统会向存储桶添加软删除政策,默认保留时长为七天。您可以修改政策的保留时长,也可以设置新的默认保留时长。您可以设置的最长保留时长为 90 天,最短保留时长为 7 天。您还可以将保留时长设置为 0,以停用存储桶的软删除功能。

恢复软删除的对象

恢复软删除对象时,Cloud Storage 会在同一存储桶中创建该软删除对象的副本。

软删除对象的恢复行为如下:

  • 恢复软删除的对象时,Cloud Storage 会在同一存储桶中创建该对象的新现行版本。对象的软删除版本会保留在存储桶中,直到保留时长到期。

    在某些情况下,如果恢复时已存在与软删除对象同名的有效对象,则恢复的对象会替换该有效对象,然后该有效对象会被软删除。在这种情况下,存储桶会包含以下对象:

    • 被替换的已归档或处于软删除状态的当前对象。

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

  • 可以使用多种方法恢复软删除的对象。您可以同步恢复软删除的对象,也可以创建长时间运行的操作来批量恢复符合特定条件的对象。

恢复启用了分层命名空间的存储桶中软删除的对象

虽然很少见,但在启用了分层命名空间的存储桶中,可能会出现名称和代数值完全相同的重复软删除对象。假设出现了这样的情景:

  1. 对象 folderA/my-object.txt 会被软删除。
  2. 然后,系统会删除其父文件夹 folderA
  3. 通过将 folderB 重命名为 folderA,将另一个对象 folderB/my-object.txt 移至原始路径。此对象现在变为 folderA/my-object.txt
  4. 此新 folderA/my-object.txt 对象也会被软删除。

虽然 Cloud Storage 中的每个对象版本都有一个唯一的世代值,但独立创建的对象(例如原始 folderA/my-object.txtfolderB/my-object.txt)可能会偶然共享相同的世代值。结合上述情形,这可能会导致两个软删除对象具有相同的名称 (folderA/my-object.txt) 和世代值。

为确保您正确恢复、列出或获取所需对象,请在请求中添加 restoreToken 参数。

在启用了分层命名空间的存储桶中使用软删除功能时,请注意以下信息:

  • 如果您尝试在不使用 restoreToken 参数的情况下恢复、列出或获取重复对象,系统会返回一条错误消息,要求您在对象恢复或对象列表请求中使用 restoreToken 参数。

  • 如果您在对象恢复、列出或获取请求中为 restoreTokennamegeneration 参数使用了错误的值,则会收到一条错误消息,指出指定的对象不存在。

恢复存储桶

恢复软删除的存储桶后,它会恢复到当前状态,并且在删除时存储桶中存在的对象也会在软删除保留时长内变得可恢复。

与软删除的对象一样,如果软删除的存储桶在软删除保留时长内未被恢复,Cloud Storage 会在软删除保留时长结束时永久删除该存储桶。

价格

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

软删除费用优化

为了帮助降低短期有效的临时对象的存储费用,同时保持数据保护,我们建议您执行以下操作:

  • 重命名对象:使用 Objects: move API 重命名短期临时对象,而不是复制对象并删除原始对象。

  • 分离临时数据:尽可能将临时数据分离到停用了软删除功能的单独存储桶中。

与其他产品和功能的互动

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

  • 对象生命周期管理

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

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

  • 对象版本控制:非当前对象被删除后,会变为软删除状态。

  • 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

后续步骤