You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何快速将含100万文件的S3桶内所有文件列表导出至TXT文件?

高效导出S3百万级文件列表到TXT的方法

s3cmd处理百万级文件确实效率极低,试试下面这几种更高效的方案:

方案一:用AWS CLI快速导出

AWS官方的CLI工具在API调用和并发处理上比s3cmd优化得多,直接用list-objects-v2配合jq提取文件名:

aws s3api list-objects-v2 --bucket bucket01 --query 'Contents[].Key' --output json | jq -r '.[]' > s3_files.txt
  • --query参数只筛选出文件的Key(路径+文件名),减少数据传输量
  • jq负责把JSON数组转成每行一个的文本格式,方便直接保存
  • 这个命令会自动处理分页,默认并发数足够应对百万级文件,速度能比s3cmd快几十倍

如果没有jq,也可以用纯AWS CLI输出:

aws s3api list-objects-v2 --bucket bucket01 --output text --query 'Contents[].Key' | tr '\t' '\n' > s3_files.txt

方案二:用S3 Inventory(最适合超大量文件)

如果文件量超过百万甚至到亿级,本地跑命令还是可能受带宽限制,直接用S3自带的Inventory功能:

  • 登录AWS控制台,进入目标桶的「管理」标签,找到「库存」选项
  • 创建新的库存配置:选择要生成清单的桶,设置目标存储桶(可以是同一桶或其他桶),只勾选「键」字段来精简输出
  • 配置生成频率(比如每日一次),S3会在后台自动扫描所有文件,生成CSV格式的清单文件
  • 等清单生成后,下载解压就能得到完整的文件列表,全程不需要本地计算资源,完全避免超时问题

方案三:用Python脚本自定义控制并发

如果需要更灵活的控制,用boto3写个简单脚本:

import boto3
from botocore.config import Config

# 提高并发连接数,加快扫描速度
config = Config(max_pool_connections=50)
s3 = boto3.client('s3', config=config)
bucket_name = 'bucket01'

with open('s3_files.txt', 'w') as file:
    paginator = s3.get_paginator('list_objects_v2')
    for page in paginator.paginate(Bucket=bucket_name):
        for obj in page['Contents']:
            file.write(f"{obj['Key']}\n")

这个脚本可以根据本地网络情况调整max_pool_connections的值,进一步提升扫描速度。


内容的提问来源于stack exchange,提问作者Dyck Anthony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:52:13