COSCLI

Tencent Cloud·Tencent.COSCLI

COS provides the command-line client COSCLI to allow you to upload, download, delete, and perform other operations on COS objects by using simple commands.

winget install --id Tencent.COSCLI --exact --source winget

Latest 1.0.9·August 25, 2026

Release Notes

COSCLI v1.0.9 迭代改动点 一、新增能力

  1. 新增 stat 命令(查询对象元数据)
  • 新增文件:cmd/stat.go、util/stat.go
  • 功能:通过 HEAD Object 接口查询对象元数据,输出 ETag、Content-Type、Content-Length、Last-Modified、Cache-Control、Content-Disposition、Content-Encoding、Content-Language、Expires、存储类型、版本号、对象类型、CRC64,以及全部自定义元数据 x-cos-meta-*。
  • 用法:
    • ./coscli stat cos://bucket-1234567890/test.txt
    • ./coscli stat cos://bucket-1234567890/test.txt --version-id
  • 参数:--version-id 指定查询的对象版本。
  1. 自定义域名支持写入配置文件(Bucket 级 customized)
  • util/types.go:Bucket 结构体新增 Customized bool 字段(yaml: customized)。
  • cmd/config_add.go:新增 --customized flag,可在添加桶时持久化自定义域名标记。
  • cmd/config_init.go:交互式初始化时新增询问「是否对该桶使用自定义 endpoint」。
  • cmd/config_show.go:展示桶的 Customized 字段。
  • util/url.go GenURL:URL 生成时 --customized 命令行参数优先,未指定则回退到配置文件中桶的 customized 字段。
  1. 新增列举存储桶的 Service 域名配置(ServiceDomain)
  • util/types.go:Base 结构体新增 ServiceDomain string(yaml: servicedomain)。
  • util/const.go:新增默认常量 CosServiceDomain = "service.cos.myqcloud.com"。
  • cmd/config_set.go:新增 --service_domain flag(@ 可清空)。
  • cmd/config_init.go:初始化时新增询问默认 service 域名。
  • cmd/config_show.go:展示 ServiceDomain。
  • util/url.go GenBaseURL:始终显式构造 ServiceURL,不再返回 nil,避免 SDK 回退到写死的 http://service.cos.myqcloud.com。优先级:命令行 --endpoint > 配置文件 base.servicedomain > 默认 service.cos.myqcloud.com。
  1. 新增代理(Proxy)支持
  • util/types.go:Base 新增 Proxy string(yaml: proxy);Param 新增 Proxy string。
  • cmd/config_set.go:新增 --proxy flag(@ 可清空)。
  • cmd/config_show.go:展示 Proxy。
  • cmd/root.go:新增全局持久化参数 --proxy,支持 http://user:[email protected]:8080、socks5://127.0.0.1:1080 等。
  • util/client.go:新增 getProxyFunc,优先级 命令行 --proxy > 配置文件 base.proxy;对 URL 校验 scheme 与 host,非法输入回退为不使用代理并打印 warning;Service 客户端与 Bucket 客户端均注入代理。
  1. signurl 支持 PUT(上传预签名 URL)
  • cmd/signurl.go:新增 --method / -m flag(默认 GET),支持 GET(下载)与 PUT(上传);对非 GET/PUT 的 method 报错。
  • 短描述更新为 "Gets the signed URL for upload or download"。
  1. restore 并发重构 + 进度显示
  • util/restore_objects.go 大幅重构:
    • 用 restoreCounter(sync/atomic)替代包级全局计数器 succeedNum/failedNum/errTypeNum,消除多次调用间的状态残留,保证并发安全。
    • 引入 worker pool(taskCh + sync.WaitGroup):list 阶段生产 restoreTask,多个 worker 并发执行 HEAD/POST restore。
    • list 与回热解耦:produceCosRestoreTasks / produceOfsRestoreTasks 只负责扫描并投递任务,回热逻辑集中在 worker。
    • 新增单行刷新的进度条(restoreProgressLoop):list 未结束时按已完成数展示,list 结束后切换为百分比。
  • cmd/restore.go 新增 --routines flag(默认 3,范围 1~10000),批量 restore 时的并发数。
  • cmd/restore.go 单对象 restore 遇到 HTTP 409(对象已在回热中)视为提交成功,不再报错。

二、性能/并发优化 7. 分片并发线程数推导重写(util/helper.go getThreadNumByPartSize)

  • 默认并发上限由硬编码 12 提升至 32(defaultMaxThreadNum),覆盖 16GB+ 大文件场景。
  • 档位表扩展:新增 partNum<=2000 → 20、default → 32。
  • 新增带宽感知:按单连接 8MB/s(singleConnThroughputMB)估算,限速场景下收敛线程数。
  • 新增上限封顶:受 --max-thread-num 控制;并保证 >=1 且不超过分片数。
  • 新增命令行参数 --max-thread-num(cmd/cp.go、cmd/sync.go,默认 32),util/types.go Operation 新增 MaxThreadNum int。
    • 语义:--thread-num(>0)显式设置时覆盖自动推导并忽略 --max-thread-num;--thread-num=0 时按文件大小自动推导,上限由 --max-thread-num 控制。
  • 调用点同步改造:util/upload.go、util/download.go、util/copy.go 的单文件处理传入 RateLimiting 与 MaxThreadNum。
  1. 重试逻辑去叠加(util/helper.go isSDKHandledError)
  • SDK(cos-go-sdk-v5)已对 5xx 响应做 HTTP 级重试(默认 10 次),应用层(默认 5 次)叠加会放大到最坏 66 次。
  • 新增 isSDKHandledError:识别 5xx 结构化错误后,upload/download/copy 不再叠加应用层重试,直接放弃并在 process.log 标注 skip coscli-retry。
  • 网络错误(body 为 io.Reader 无法重放)仍由应用层兜底重试。

Installer type: portable

x6484EF2C95290CDA7A38AD543F3D105F3D9AE2CC8A9D18CFD4CEB09D4212978765

Details

Homepage
https://www.tencentcloud.com/document/product/436/43249
License
Apache-2.0
Publisher
Tencent Cloud
Support
https://github.com/tencentyun/coscli/issues
Privacy Policy
https://www.tencentcloud.com/document/product/301/17345
Copyright
Copyright © 2013-2026 Tencent Cloud. All Rights Reserved.

Tags

costencent-cloud

Older versions (14)

1.0.8
x6496E3C2AA2706F2C580F30093D1BF9F468046FD2CF498596F373F8E2707F0DEA1
1.0.7
x6477C26D2E0226E16C1AFFA0E0C220CEC2F3FD256461D0679162223D54336E5038
1.0.6
x648D415550D4625E0DF0B39164326CEDD5512D3271C11BEBEA0DCF9CFC01F6FE46
1.0.5
x647629E139E3E38F6FEA1A9574C730385E834CFE6746BF237AD4031999FED01B4C
1.0.4
x644A4C7E96AD2F5CAD0B5FC0F5F94677BEB208F71F7D103CEA3374908793AC531E
1.0.3
x649E5F9B9BF31159D88B8909AA6CE0EC9E1299559BA5D18597DEDEAE3904399631
1.0.2
x646EE8CAE7EA86547D7A5ACF57F8D919210F076A785C482AAFA90F7099EF61D65A
1.0.1
x64C725992B08E486C32D38552E4C450C22188C265469D66C92F22B18EE4EF32F35
0.20.0-beta
x64B93E340086BD119EBCA7751BC6FCA8D8ABD2541535452261ECE752D3A01117BF
0.19.0-beta
x642113755E238928A194D2647147EA4123CAC96E47BEA644D0E8F1DD0113A41A47
0.18.0-beta
x64826FB0CF65BA20CD86675BB47AF8E327CE9ABE706E79ABE65831D9FC45682BDD
0.17.0-beta
x642EEB875EE28E78CBA4985E306B3040E75C6023D9A7AC9A65662C9244D387C872
0.13.0-beta
x649F38C4EA81F505CF6389CE0DEEBBF8FE527D045B6963EA69BD153DD6268D5435
0.12.0-beta
x642EFC7D881D6E3139283CB0B66BBEFBB90DD8D18089F1190DBC3D3396ADBAD248