Google cloud storage 快速删除非空Google bucket的方法?

Google cloud storage 快速删除非空Google bucket的方法?,google-cloud-storage,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/ 从开发人员控制台中卸下bucket。它将在删除非空桶之前请求确认。它就像一个符咒;) 另一个选项是在铲斗上启用。您可以将年龄指定为0天,然后等待几天。应删除所有对象。在删除存储桶之前,

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

# 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/

从开发人员控制台中卸下bucket。它将在删除非空桶之前请求确认。它就像一个符咒;)

另一个选项是在铲斗上启用。您可以将年龄指定为0天,然后等待几天。应删除所有对象。

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

您可以使用
gsutil rm-r
()完成此操作。只是不要传递
*
通配符,它会在删除所有对象后删除bucket本身

gsutil -m rm -r gs://my-bucket
Google云存储bucket删除只有在bucket列表返回0个对象时才能成功。如果对象仍然存在,则在尝试删除Bucket时,可能会出现Bucket Not Empty错误(或者在UI的情况下为“Bucket Not Ready”)


gsutil
具有内置的重试逻辑,可以同时删除存储桶和对象。

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

bucket.delete(force=True)
用你现在的语言尝试类似的事情


使用此设置适当的生命周期规则。e、 等一天

https://cloud.google.com/storage/docs/gsutil/commands/lifecycle
示例(复制粘贴前仔细阅读)

示例(复制粘贴前仔细阅读)

然后删除bucket

这将异步删除数据,因此您不必保留 一些后台工作正在运行


这一点值得总结和指出

如果有大量(TB)的数据,那么使用gsutil rm删除会很慢

但是,您可以指定存储桶的到期日期,并让地面军事系统为您完成这项工作。创建
fast delete.json
策略:

{
   "rule":[
      {
         "action":{
            "type":"Delete"
         },
         "condition":{
            "age":0
         }
      }
   ]
}
然后申请

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

谢谢,@jterrace和@Janosch缩短了一行,用于生命周期更改:

gsutil lifecycle set <(echo '{"rule":[{"action":{"type":"Delete"},"condition":{"age":0}}]}') gs://MY-BUCKET

gsutil生命周期集我将这个答案标记为正确答案,但我真的觉得应该有一种更即时的方法来删除一个bucket及其所有内容。现在,在删除bucket本身之前,无法避免滚动一个bucket中的所有内容并逐个删除所有对象。这对大多数bucket都很有效,但它只是默默地无法删除包含大量对象的bucket。@KelseyFrancis我也遇到过同样的情况。如果bucket有大量的对象,就无法删除它。很好的建议。似乎已经工作了,而且比等待gsutil更快,因为我有数百万个文件。我支持这个!我有211TB的内存需要删除,递归rm需要几天的时间,我没有做任何改动。这很快就成功了。
echo'{“rule”:[{“action”:{“type”:“Delete”},“condition”:{“age”:0}}]}>tmp.json;gsutil lifecycle set tmp.json gs://MY-BUCKET
gsutil lifecycle set生命周期管理方法非常适合自动删除所有对象。过了一段时间,要完成任务,仍然需要删除(然后是空的)存储桶。您可以使用
gsutil rb gs://
执行此操作,只要bucket还没有空,它就会快速失败。Docs:虽然您的代码可能会提供问题的答案,但请在其周围添加上下文,以便其他人了解它的功能和原因。似乎
force
参数已被删除,不再可用。当从Google App Engine应用程序中删除bucket时,解决方法是按照说明设置lifecycle对象,并在稍后安排一项任务,以便在所有对象都已删除后(由于lifecycle rule操作)实际删除bucket。不太令人满意…我想知道如何防止这种情况?
{
   "rule":[
      {
         "action":{
            "type":"Delete"
         },
         "condition":{
            "age":0
         }
      }
   ]
}
gsutil lifecycle set fast-delete.json gs://MY-BUCKET
gsutil lifecycle set <(echo '{"rule":[{"action":{"type":"Delete"},"condition":{"age":0}}]}') gs://MY-BUCKET