删除非空谷歌桶的快速方法?

时间:2015-04-24 06:17:25

标签: google-cloud-storage

这是我唯一的选择还是有更快的方式?

# Delete contents in bucket (takes a long time on large bucket)
gsutil -m rm -r gs://my-bucket/*

# Remove bucket
gsutil rb gs://my-bucket/

7 个答案:

答案 0 :(得分:19)

铲斗在删除之前必须为空。因此,在删除存储桶之前,必须删除它包含的所有对象。

您可以使用gsutil rm -rdocumentation)执行此操作。只是不要传递*通配符,它​​会在删除所有对象后删除存储桶。

gsutil -m rm -r gs://my-bucket

Google云端存储对象列表最终是一致的,在存储桶列表返回0个对象之前,存储桶删除无法成功。因此,有时在删除所有对象后,存储桶可能需要一些时间才能显示为空。在这种情况下,您可以在尝试删除存储桶时获取Bucket Not Empty错误(或在UI的情况下“Bucket Not Ready”)。

解决方案是重试删除,gsutil具有内置的重试逻辑。

答案 1 :(得分:14)

另一种选择是在存储桶上启用Lifecycle Management。您可以指定0天的Age,然后等待几天。应删除所有对象。

答案 2 :(得分:4)

使用Python客户端,您可以使用以下命令在脚本中强制删除:

bucket.delete(force=True)

以您当前的语言尝试类似的事情。

Github thread that discusses this

答案 3 :(得分:1)

使用此选项设置适当的生命周期规则。例如等一天

https://cloud.google.com/storage/docs/gsutil/commands/lifecycle

然后删除存储桶。

答案 4 :(得分:1)

这值得总结和指出。

如果有很多数据(TB),则使用gsutil rm进行删除会很慢

gsutil -m rm -r gs://my-bucket

但是,您可以指定存储桶的到期时间,然后让GCS为您完成工作。创建fast-delete.json策略:

{
   "rule":[
      {
         "action":{
            "type":"Delete"
         },
         "condition":{
            "age":0
         }
      }
   ]
}

然后申请

gsutil lifecycle set fast-delete.json gs://MY-BUCKET

谢谢@jterrace和@Janosch

答案 5 :(得分:0)

从Developers Console中删除存储桶。在删除非空桶之前,它会要求确认。它就像一个魅力;)

答案 6 :(得分:0)

缩短生命周期变化的班轮:

n

我也很幸运,创建了一个空的存储桶,然后开始转移到我要清空的存储桶。我们最大的铲斗用这种方法大约要花一个小时才能清空。生命周期方法似乎至少需要一天。