amazon-web-services - 通过 CLI 删除 S3 存储桶中的空文件夹
问题描述
我在 S3 存储桶中有大约 8K 个文件夹。其中一些是“空的”(没有带有名称前缀的对象),一些是“非空的”。
我如何以编程方式检测存储桶中的此类“空”文件夹并将其删除。
是的,我知道存储桶中没有文件夹的概念 - 它只是名称。
解决方案
S3 上下文中的空文件夹是一个大小为零的 S3 对象,其键以文件夹分隔符结尾,/
例如images/cats/
。
如果使用此 S3 存储桶的应用程序并不严格需要这些文件夹对象,而是可以从文件对象的存在推断文件夹结构的存在,例如images/dogs/
在他们看到文件时推断文件夹images/dogs/terrier.png
,那么一种删除所有空文件夹的解决方案将是简单地枚举所有以结尾的对象,/
然后删除所有大小为零的对象。这将删除所有文件夹对象。
如果应用程序确实需要为非空文件夹保留这些文件夹对象,那么您将做一些不同的事情。例如,枚举存储桶中的所有 S3 对象,提取那些代表文件夹(大小为零,以 结尾/
)的对象,然后查看相同的前缀是否存在于任何其他非文件夹对象中。
此外,如果您发现枚举整个存储桶的内容变得有问题(例如,如果您有数百万个对象),那么您可能会考虑使用 S3 清单报告来推动您的流程。
推荐阅读
- jenkins - 如何在 Jenkins 文件(管道)中使用 Shared Libray 中的 groovy 常量?
- django - DRF 序列化器布尔字段不保存模型默认值
- c++ - C++ 抽象 Endian 是中性的吗?
- css - 更改 WHMCS 导航颜色
- python - 如何根据python列表中的内容以特定顺序/格式读取和打印列表?
- java - ResultSet 与表无关
- dialogflow-es - Dialogflow:如何重复以前的意图
- dynamics-crm - Prem 8.2 getGlobalContext 上的 Dynamics 不起作用,只有 Xrm.Page.Context 起作用
- javascript - 为什么点击变色js功能后img会不可见?
- reactjs - 在 React JS 中使用 font-awesome