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

如何使用MinIO的mcli命令行工具流式下载文件并直接压缩?

实现MinIO文件/文件夹流式下载并压缩(无需存盘)

单个文件流式压缩

你的思路是可行的,只需确保mcli将文件内容输出到标准输出(stdout),再通过管道传递给zip。建议给压缩包内的文件指定正确名称,避免解压后出现默认的-文件名:

mcli get myinstance/output/file.csv - | zip --name file.csv myfile.zip -
  • mcli get ... -:让mcli将文件内容输出到stdout而非本地文件
  • --name file.csv:告诉zip将stdin中的内容命名为file.csv存入压缩包
  • zip ... -:让zip从stdin读取内容完成压缩

文件夹递归流式压缩

如果要处理整个文件夹,需要逐个流式下载文件夹内的文件并追加到zip包中,全程无需本地存储。可以结合mcli ls遍历文件,再通过循环逐个处理:

mcli ls -r myinstance/output/ | awk '{print $NF}' | while read file; do
  mcli get myinstance/output/"$file" - | zip --append --name "$file" myfolder.zip -
done
  • mcli ls -r:递归列出目标文件夹下的所有文件
  • awk '{print $NF}':提取文件名(过滤掉mcli ls输出的日期、大小等冗余信息)
  • while read file:遍历每个文件
  • zip --append:将当前文件的流式内容追加到zip包中(首次执行会自动创建新包)

如果文件夹内有大量小文件,上述循环方式会多次调用zip,效率略低。若追求更高效率,可结合tar先创建流式归档,再转换为zip:

mcli get -r myinstance/output/ - | tar cf - -T - | zip myfolder.zip -

注:这种方式依赖tar与zip的协同兼容,部分环境可能需要调整参数以确保tar能正确读取mcli输出的文件列表和内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:50:07