Google cloud storage 恢复整个存储桶

Google cloud storage 恢复整个存储桶,google-cloud-storage,gsutil,Google Cloud Storage,Gsutil,我在谷歌云存储上有几个存储桶,我猜我的生命周期文件没有正确设置,因为我所有的存储桶现在都是空的 { "lifecycle": { "rule": [ { "action": {"type": "Delete"}, "condition": { "age": 60, "isLive": false } }, { "action": {"type":

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

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

既然我已经打开了版本控制,并且我可以使用存储桶上的
ls-la
查看文件,那么有没有办法恢复所有文件,以及如何防止它们再次被删除?

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

无论如何,我能想到的恢复对象的最快方法是:


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

我认为您是正确的,这是唯一的方法。。。糟糕的是,没有一种方法可以改变文件的元生成以使其恢复活动状态。即使每x个文件的成本与数据传输的成本相同。
$ 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