通过CLI删除S3存储桶中的空文件夹

时间:2019-02-21 19:30:33

标签: amazon-web-services amazon-s3 command-line-interface

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

如果应用程序确实需要为非空文件夹保留这些文件夹对象,那么您将做一些不同的事情。例如,枚举存储桶中的所有S3对象,拉出代表文件夹的对象(大小为零,以plot inputFullPath using 1:2 with lines ls 3 notitle 结尾),然后查看是否在其他任何非文件夹对象中都存在相同的前缀。

此外,如果您发现枚举整个存储桶中的内容变得有问题(例如,如果您有数百万个对象),则可以考虑使用S3库存报告来驱动流程。