如何查找名下所有S3存储桶中体积最大的文件
S3多存储桶大文件批量排查与清理方案
方案1:AWS CLI 批量导出排查(无额外依赖,数据实时)
使用前提:已在本地配置好具备S3读权限的AWS访问凭证,安装了AWS CLI工具。
- 第一步:获取账号下所有存储桶列表
执行命令:aws s3 ls - 第二步:批量导出所有存储桶的全量对象清单
执行如下Shell命令,会将所有文件的最后修改时间、大小、存储路径统一写入all_s3_files.txt文件:
Windows用户可通过WSL运行上述命令,也可替换为PowerShell等效脚本执行for bucket in $(aws s3 ls | awk '{print $3}'); do aws s3 ls s3://$bucket --recursive --human-readable --summarize >> all_s3_files.txt; done - 第三步:筛选目标文件
- 筛选全账号下体积排名前20的文件:
sort -hr -k3 all_s3_files.txt | head -n 20 - 筛选180天前修改、体积大于1GB的老旧大文件(可自行调整日期阈值):
awk '$1 < "2023-01-01" && $3 ~ /GiB/ {print $0}' all_s3_files.txt
- 筛选全账号下体积排名前20的文件:
方案2:S3 Storage Lens 可视化统计(无需写代码)
AWS原生提供的免费存储统计功能,无需额外开发即可快速获取全局存储分布:
- 在S3控制台开启默认的Storage Lens dashboard,即可查看所有存储桶的存储用量、对象数量排序,快速定位占用空间最高的几个存储桶
- 支持下钻单个桶查看对象大小分布、最后修改/访问时间分布,直接筛选出长期未访问的大体积对象
注意:Storage Lens的统计数据最多有48小时延迟,需要实时精准数据优先选CLI方案
清理操作注意事项
- 清理前务必导出目标文件清单做二次确认,避免误删业务正在使用的数据
- 如果存储桶开启了版本控制,仅删除当前版本对象不会释放空间,还需要同步删除历史版本标记与删除标记,也可以配置S3生命周期规则自动清理过期版本
- 不需要删除的冷访问数据可以切换为S3 Intelligent-Tiering、Glacier Flexible Retrieval等存储类,相比标准存储最高可节省90%的存储成本
内容的提问来源于stack exchange,提问作者Mathieu J.
相关产品推荐
相关产品推荐

