启动发现
少量 delimiter probe 找真实前缀边界,第一次递归 list 也能并发。
Rust CLI / 自动化对象清单
一个聚焦的大桶 list / diff 工具:列举、对比、输出 Parquet;前缀发现、运行时拆分、dry-run plan 和运行记录由默认路径完成。
当前证据
最新 README 引用的第三方 Alibaba Cloud OSS 测试。现在的重点不是让用户先调参数,而是默认启动发现、运行时拆分和可校验产物。
Alibaba Cloud OSS 第三方测试
single stream vs -c 8
v0.20.0 起
图表只展示测试数据;自动化能力放在流程里说明,避免混淆。
内部视角
s3-turbo-list 现在更像一个自动化对象清单 / diff 工具:启动发现、运行时拆分、dry-run plan、运行记录和产物校验都在默认路径里。
第一次递归 list 就能并发
1M 对象,-c 8
v0.20.0 起
证据链
s3-turbo-list 的重点不是多给参数,而是把大型对象存储 list / diff 里最容易出错的步骤收进默认路径。
少量 delimiter probe 找真实前缀边界,第一次递归 list 也能并发。
运行时只在吞吐继续上升时拆分长尾片段,把并发当上限。
Parquet、运行记录、hash、行数和 schema 元数据让结果能被 CI 和 agent 复查。
18,182 objects/s
52,632 objects/s
它解决什么
需要列举很大的 S3 兼容桶,或对比两个桶,但不想先设计分区方案,也不想调一堆参数。
不是备份工具、同步引擎或图形化存储浏览器。它只做自动 list、可靠 diff 和机器可读证据。
第一次运行不需要 hints 文件。默认路径负责并发;Parquet、运行记录、trace JSONL 和稳定退出码负责后续检查。
自动化路径
启动时用少量 delimiter probe 找真实前缀边界并缓存,第一次递归 list 就能并发运行。
运行时拆分长尾片段;只有吞吐继续上升时才增加并发,把并发数当上限而不是目标。
两侧桶并行列举,按 key 顺序流式合并,写出带 `DiffFlag` 的 Parquet,不把两边 key 全放进内存。
受限于服务商吞吐时保持单文件;只有 Parquet 编码成为瓶颈时,才扩展成多个 part-file writer。
`--dry-run --agent` 和 `--plan-json` 在不访问 S3 的情况下输出配置来源、计划产物、warning 和文件冲突。
`--run-manifest` 记录状态、指标、产物、warning、SHA256、Parquet 行数和 schema 元数据。
把参数校验、服务商配置、网络、输出、数据校验和中断分成稳定退出码,方便 CI 和 agent 接入。
`compat-probe` 和 `--trace-compat` 在扩大扫描前暴露端点行为和真实 S3 API 调用。
为什么做
对象存储工作经常从两个问题开始:这个桶里有什么?它和另一个桶有什么不同?难点不是继续加参数,而是让默认路径足够快、足够清楚、能被自动化系统信任。
s3-turbo-list 刻意保持命令面很小:发现结构、调整并发、写出可分析产物,并提供 JSON plan 和运行记录,让人、CI 和 agent 都能判断一次运行是否可信。
一次运行
先跑 `doctor --json`、`doctor --simple` 或 `--dry-run --agent`,在访问 S3 前解析配置、输出路径和 warning。
直接 list 或 diff;启动发现和 hints cache 会自动提供并发片段。
写出运行记录,再用 `manifest-summary --check` 检查状态、hash、行数、schema 和退出分类。
用 DuckDB、pandas 或 pyarrow 读取 Parquet;需要流式处理时输出 TSV / NDJSON。
实际用法
只给桶和 region 跑 `list`,启动发现会自动找边界,输出 Parquet 和 key 空间计数。
扫描前生成 dry-run JSON plan,让 agent 先检查 warning、计划产物和配置来源。
把源端和目标端 diff 成一份带 `DiffFlag` 的 Parquet,下游再过滤变更、左侧独有和右侧独有对象。
兼容端点
先用端点 preset、compat-probe、trace JSONL 和服务商 warning 摸清行为,再扩大扫描规模。
问题与用法
小桶当然可以。s3-turbo-list 面向大桶:默认路径要能自动发现结构、并发列举,并留下结构化产物。
不需要。启动发现会探测真实 `CommonPrefixes` 边界并缓存。hints 文件只是重复生成对象清单时的可选控制。
这版修复 root segment retry 的续扫边界,给运行时 split probe 加 timeout,并避免干净中断把 run manifest 的 fatal errors 计高。项目仍然是 Apache-2.0。