configuration存储桶的生命周期策略,像回收站一样保留已删除的文件

我正在将文档存储在GCS中,我希望在删除文件时复制Windows / OSX文件移动到回收站/垃圾箱的概念,以便恢复它们,而不是直接删除它们。 换句话说,我想删除文件仍然可以访问一段时间(比如一个月)。 我不需要完整版本,因为我只关心oops-I-deleted-something-important用例。 我应该如何configuration生命周期策略来支持这一点,同时最大限度地减less存储开销?

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

$ gsutil versioning set on gs://bucket 

尽pipe这是过度的 我们只关心以前版本的文件,所以我们让GCS用生命周期pipe理来清理不需要的版本。 首先,我们可以使用生命周期规则来清理任何长时间删除的内容,如下所示:

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

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

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

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

相反,如果您希望保留所有文件的早期版本,您只需将numNewerVersions调整为2 ,但是这会导致删除的文件保留在过去的两个版本中,而不仅仅是一个。 由于不存在NumberOfNewerArchivedVersions条件,因此不能同时拥有这两个条件,并且只能保留任何文件的一个归档版本,并将其删除。

我不明白这是怎么可能的。 Age生命周期条件testing删除对象时似乎没有被修改的对象创build时间。 运用

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

将无法正常工作 :如果您将对象上传到存储桶中,请将其保留30天,然后将其删除,生命周期pipe理将立即(+滞后)删除存档版本,因为存档版本年龄大于30天这点。 似乎没有与删除时间有关的任何条件,所以在生命周期条件下没有办法使用它。