这是我唯一的选择还是有更快的方式?
# 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/
答案 0 :(得分:19)
铲斗在删除之前必须为空。因此,在删除存储桶之前,必须删除它包含的所有对象。
您可以使用gsutil rm -r
(documentation)执行此操作。只是不要传递*
通配符,它会在删除所有对象后删除存储桶。
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)
以您当前的语言尝试类似的事情。
答案 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
我也很幸运,创建了一个空的存储桶,然后开始转移到我要清空的存储桶。我们最大的铲斗用这种方法大约要花一个小时才能清空。生命周期方法似乎至少需要一天。