首页 > 解决方案 > 通过 CLI 删除 S3 存储桶中的空文件夹

问题描述

我在 S3 存储桶中有大约 8K 个文件夹。其中一些是“空的”(没有带有名称前缀的对象),一些是“非空的”。

我如何以编程方式检测存储桶中的此类“空”文件夹并将其删除。

是的,我知道存储桶中没有文件夹的概念 - 它只是名称。

标签: amazon-web-servicesamazon-s3command-line-interface

解决方案


S3 上下文中的空文件夹是一个大小为零的 S3 对象,其键以文件夹分隔符结尾,/例如images/cats/

如果使用此 S3 存储桶的应用程序并不严格需要这些文件夹对象,而是可以从文件对象的存在推断文件夹结构的存在,例如images/dogs/在他们看到文件时推断文件夹images/dogs/terrier.png,那么一种删除所有空文件夹的解决方案将是简单地枚举所有以结尾的对象,/然后删除所有大小为零的对象。这将删除所有文件夹对象。

如果应用程序确实需要为非空文件夹保留这些文件夹对象,那么您将做一些不同的事情。例如,枚举存储桶中的所有 S3 对象,提取那些代表文件夹(大小为零,以 结尾/)的对象,然后查看相同的前缀是否存在于任何其他非文件夹对象中。

此外,如果您发现枚举整个存储桶的内容变得有问题(例如,如果您有数百万个对象),那么您可能会考虑使用 S3 清单报告来推动您的流程。


推荐阅读