适合场景
需要完整桶清单、迁移基线、前后差异对比,或需要证明某个 provider 的列举行为很慢、很偏斜。
Rust CLI / 对象存储
s3-turbo-list 适合这样的时刻:一个桶太大、太慢,或者太关键,不能再靠单条顺序列举来理解。它把对象元数据变成可审计的 Parquet 清单,并保留足够 trace 让你事后解释这次运行。
$ s3-turbo-list --dry-run --agent \
--output-dir out --delimiter '' \
list --region us-east-2 --bucket my-bucket
plan.segments 64
plan.output out/*.parquet
trace.enabled true
checkpoint.resume ready
$ s3-turbo-list manifest-summary run.json --check
artifacts ok
parquet.rows verified
exit_code 0定位
需要完整桶清单、迁移基线、前后差异对比,或需要证明某个 provider 的列举行为很慢、很偏斜。
它不是备份系统,也不是图形化存储浏览器。它专注于列举、追踪、导出和对比,把清单交给后续分析工具。
运行 manifest、checkpoint 状态、S3 调用 trace JSONL,以及适合 DuckDB 或 pandas 分析的 Parquet 等输出。
能力
启动时探测真实 CommonPrefixes,缓存边界,不需要手工调参就能开始并发递归列举。
把每一次 S3 API 调用记录成结构化 JSONL,便于在运行后观察 provider 行为。
从已保存的分段进度恢复中断扫描,并通过身份校验避免错配运行。
默认流式写入 Parquet,也可输出 NDJSON、TSV、summary-only 和 dry-run,适合 shell、CI 和审计流程。
为什么需要它
常规列举工具通常绑定在单条 ListObjectsV2 分页链上。小桶还好,当对象数量达到百万、千万甚至更高时,这会非常痛苦。
s3-turbo-list 会切分 key 空间,并行执行列举,并通过 manifest、trace、checkpoint 和 Parquet 产物让运行过程可审计。
工作流
先运行 doctor 或 dry-run,确认输出路径、参数、警告,以及这次任务是否合理。
探测 prefix 结构和 key-space 边界,让扫描从一开始就能并行,而不是卡在单条分页链上。
用有界内存、偏斜分段运行时拆分、checkpoint、manifest 和 trace 输出完成递归列举。
用 DuckDB 或 pandas 查询 Parquet、对比多次清单,或查看 trace JSONL 解释 provider 行为。
兼容性
Endpoint preset、compat-probe、trace 输出和校验报告可以帮助你在扩展扫描规模前理解每个 provider 的具体行为。