配置存储桶的生命周期策略,如回收站,将已删除的文件保留一小段时间

配置存储桶的生命周期策略,如回收站,将已删除的文件保留一小段时间

我将文档存储在 GCS 中,我想复制 Windows/OSX 的概念,即文件在删除后移至回收站/垃圾箱,以便可以恢复,而不是直接删除它们。换句话说,我希望删除的文件在一段时间内(比如一个月)仍可访问。我不需要完整的版本控制因为我只关心“哎呀,我删除了重要的东西”用例。我应该如何配置生命周期策略支持这一点,同时最小化存储开销?

答案1

首先,启用存储桶的版本控制将确保用户意外删除的内容不会丢失。

$ gsutil versioning set on gs://bucket

不过这有点过头了;我们只关心文件的先前版本,因此我们将让 GCS 使用生命周期管理来清理不需要的版本。首先,我们可以使用生命周期规则清理任何长期删除的内容,如下所示:

{
  "action": {"type": "Delete"},
  "condition": {"isLive": false, "age": 30}
}

下一步是清理日期截止之前的不必要的版本。如果您只想保留存档的修订版本删除文件,请使用以下规则:

{
  "action": {"type": "Delete"},
  "condition": {"isLive": false, "numNewerVersions": 1}
}

对于仍然存在的文件,所有存档版本都将被删除(因为有更新的实时版本),而对于已删除的文件,最近存档的版本将是最新的,因此不会被删除。这实际上是一个回收站。

相反,如果您希望保留所有文件的先前版本,只需调整numNewerVersions2,但这会导致已删除的文件保留过去两个修订版本,而不是一个。由于不存在条件,因此NumberOfNewerArchivedVersions您无法同时保留任何文件的一个存档版本,无论是否已删除。

答案2

我目前还不明白这怎么可能实现。年龄生命周期条件测试对象创建时间,删除对象时似乎不会修改该时间。使用

{
  "action": {"type": "Delete"},
  "condition": {"isLive": false, "age": 30}
}

不起作用:如果您将对象上传到存储桶,将其保留 30 天,然后删除,生命周期管理将立即(+滞后)删除存档版本,因为此时存档版本的使用时间已超过 30 天。似乎没有任何与删除时间相关的条件,因此无法在生命周期条件中使用它。

相关内容