快速删除 GCS 存储桶上的大文件夹的方法
Posted
技术标签:
【中文标题】快速删除 GCS 存储桶上的大文件夹的方法【英文标题】:Fast way to delete big folder on GCS bucket 【发布时间】:2020-05-15 09:56:32 【问题描述】:我有一个非常大的 GCS 存储桶(几 TB),有几个子目录,每个目录都有几 TB 的数据。
我想删除其中一些文件夹。
我尝试使用 Cloud Shell 中的 gsutil
,但需要很长时间。
作为参考,这是我正在使用的命令:
gsutil -m rm -r "gs://BUCKET_NAME/FOLDER"
我正在查看this question,并认为也许我可以使用它,但它似乎无法按文件夹名称过滤,而且我无法按任何其他内容过滤,因为文件夹有一些混合内容。
到目前为止,我最后的手段是等到我要删除的文件夹“旧”,然后相应地设置生命周期规则,但这可能需要太长时间。
还有其他方法可以加快速度吗?
【问题讨论】:
【参考方案1】:这需要很长时间;您必须对前缀为 FOLDER/
的每个对象发出 DELETE 请求。
GCS 没有“文件夹”的概念。对象名称可以共享一个公共前缀,但它们都在一个平面命名空间中。例如,如果你有这三个对象:
/a/b/c/1.txt /a/b/c/2.txt /a/b/c/3.txt...那么您实际上没有名为 a
、b
或 c
的文件夹。删除这三个对象后,当您在存储桶中列出对象时,“文件夹”(即它们共享的前缀)将不再出现。
有关详细信息,请参阅文档:
https://cloud.google.com/storage/docs/gsutil/addlhelp/HowSubdirectoriesWork
【讨论】:
谢谢 :) 我想我要问的是,是否有任何“技巧”可以更快地删除对象...... 如果您可以使用生命周期管理 (cloud.google.com/storage/docs/lifecycle),唯一可以显着加快删除速度的方法,但这仅适用于整个存储桶,而不适用于存储桶中的“文件夹”。跨度>以上是关于快速删除 GCS 存储桶上的大文件夹的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GCS 中的增量表之上创建 BQ 外部表并仅显示最新快照