恢复整个桶

Restore Entire Bucket

我在 google 云存储上有几个存储桶,我猜我的生命周期文件没有正确设置,因为我所有的存储桶现在都是空的。

{
  "lifecycle": {
    "rule": [
      {
        "action": {"type": "Delete"},
        "condition": {
          "age": 60,
          "isLive": false
        }
      },
      {
        "action": {"type": "Delete"},
        "condition": {
          "numNewerVersions": 3 
        }
      }
    ]
  }
}

因为我打开了版本控制,我可以看到存储桶上使用 ls -la 的文件,有什么方法可以恢复所有文件,我怎样才能防止它们再次被删除?

鉴于上面的生命周期配置,您的活动对象不应该被删除,至少 GCS 生命周期管理过程不会。

无论如何,我能想到的最快的恢复对象的方法是gsutil's instructions for copying versioned buckets:

$ gsutil mb gs://mynewbucket

# This step is only necessary if you want to keep all archived versions.
$ gsutil versioning set on gs://mynewbucket

$ gsutil cp -r -A gs://oldbucket/* gs://mynewbucket

这会将每个对象的所有存档版本按照从旧到新的顺序从旧存储桶复制到新存储桶。如果您不在新存储桶中启用版本控制,那么您最终只会得到每个对象的一个​​副本(对象的每个复制版本将覆盖该对象的先前版本)。此外,对于可能没有实时版本的任何对象,最新的存档版本将成为新存储桶中的实时版本。