删除GCS存储桶上大文件夹的快速方法

时间:2020-01-29 20:17:41

标签: google-cloud-platform google-cloud-storage gsutil

我有一个很大的GCS存储桶(几个TB),其中有几个子目录,每个子目录都有几TB的数据。

我要删除其中一些文件夹。

我尝试使用Cloud Shell中的gsutil,但是它已经很老了。

作为参考,这是我正在使用的命令:

gsutil -m rm -r "gs://BUCKET_NAME/FOLDER"

我当时看着this question,以为也许可以使用它,但是似乎无法按文件夹名称进行过滤,并且由于文件夹包含一些混合内容,因此我也无法通过其他任何方式进行过滤

到目前为止,我的最后一招是等到要删除的文件夹为“旧”,并相应地设置生命周期规则,但这可能会花费太长时间。

还有其他方法可以使此速度更快吗?

1 个答案:

答案 0 :(得分:1)

这将花费很长时间;您必须对每个带有前缀FOLDER/的对象发出DELETE请求。

GCS没有“文件夹”的概念。对象名称可以共享一个公共前缀,但是它们都在一个平面名称空间中。例如,如果您具有以下三个对象:

  • /a/b/c/1.txt
  • /a/b/c/2.txt
  • /a/b/c/3.txt

...那么您实际上没有名为abc的文件夹。删除这三个对象后,当您在存储桶中列出对象时,“文件夹”(即它们共享的前缀)将不再显示。

有关详细信息,请参阅文档:

https://cloud.google.com/storage/docs/gsutil/addlhelp/HowSubdirectoriesWork