答案1
首先,启用存储桶的版本控制将确保用户意外删除的内容不会丢失。
$ gsutil versioning set on gs://bucket
不过这有点过头了;我们只关心文件的先前版本,因此我们将让 GCS 使用生命周期管理来清理不需要的版本。首先,我们可以使用生命周期规则清理任何长期删除的内容,如下所示:
{
"action": {"type": "Delete"},
"condition": {"isLive": false, "age": 30}
}
下一步是清理日期截止之前的不必要的版本。如果您只想保留存档的修订版本删除文件,请使用以下规则:
{
"action": {"type": "Delete"},
"condition": {"isLive": false, "numNewerVersions": 1}
}
对于仍然存在的文件,所有存档版本都将被删除(因为有更新的实时版本),而对于已删除的文件,最近存档的版本将是最新的,因此不会被删除。这实际上是一个回收站。
相反,如果您希望保留所有文件的先前版本,只需调整numNewerVersions
到2
,但这会导致已删除的文件保留过去两个修订版本,而不是一个。由于不存在条件,因此NumberOfNewerArchivedVersions
您无法同时保留任何文件的一个存档版本,无论是否已删除。