快速删除 GCS 存储桶上的大文件夹的方法
Fast way to delete big folder on GCS bucket
我有一个非常大的 GCS 存储桶(几 TB),有几个子目录,每个子目录都有几个 TB 的数据。
我想删除其中一些文件夹。
我尝试使用云 Shell 中的 gsutil
,但这需要很长时间。
作为参考,这是我正在使用的命令:
gsutil -m rm -r "gs://BUCKET_NAME/FOLDER"
我正在查看 ,我想也许我可以使用它,但它似乎无法按文件夹名称进行过滤,而且我也无法按任何其他内容进行过滤,因为文件夹有一些混合内容。
到目前为止,我最后的办法是等到我要删除的文件夹 "old",然后相应地设置生命周期规则,但这可能需要很长时间。
还有其他方法可以加快速度吗?
只是需要很长时间;您必须为前缀为 FOLDER/
.
的每个对象发出 DELETE 请求
GCS 没有"folders" 的概念。对象名称可以共享一个公共前缀,但它们都在一个平面命名空间中。例如,如果您有这三个对象:
- /a/b/c/1.txt
- /a/b/c/2.txt
- /a/b/c/3.txt
...那么您实际上并没有名为 a
、b
或 c
的文件夹。删除这三个对象后,当您在存储桶中列出对象时,"folders"(即它们共享的前缀)将不再出现。
有关详细信息,请参阅文档:
https://cloud.google.com/storage/docs/gsutil/addlhelp/HowSubdirectoriesWork
我有一个非常大的 GCS 存储桶(几 TB),有几个子目录,每个子目录都有几个 TB 的数据。
我想删除其中一些文件夹。
我尝试使用云 Shell 中的 gsutil
,但这需要很长时间。
作为参考,这是我正在使用的命令:
gsutil -m rm -r "gs://BUCKET_NAME/FOLDER"
我正在查看
到目前为止,我最后的办法是等到我要删除的文件夹 "old",然后相应地设置生命周期规则,但这可能需要很长时间。
还有其他方法可以加快速度吗?
只是需要很长时间;您必须为前缀为 FOLDER/
.
GCS 没有"folders" 的概念。对象名称可以共享一个公共前缀,但它们都在一个平面命名空间中。例如,如果您有这三个对象:
- /a/b/c/1.txt
- /a/b/c/2.txt
- /a/b/c/3.txt
...那么您实际上并没有名为 a
、b
或 c
的文件夹。删除这三个对象后,当您在存储桶中列出对象时,"folders"(即它们共享的前缀)将不再出现。
有关详细信息,请参阅文档:
https://cloud.google.com/storage/docs/gsutil/addlhelp/HowSubdirectoriesWork