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

通过终端批量下载Google Cloud中Zip文件的技术问询

我来帮你解决Google Cloud存储中批量下载Zip文件的问题!你之前用curl出错,是因为直接用的是网页端的URL(https://storage.cloud.google.com/...),这是网页展示链接,不是可直接下载的对象存储链接,而且curl处理GCS的权限和批量操作远不如官方工具顺手。下面给你两种靠谱的解决方案:

一、先搞定前置准备:安装并配置gsutil

gsutil是Google Cloud官方的命令行工具,专门用来操作云存储,批量操作超方便:

  • 先安装Google Cloud SDK(包含gsutil),如果已经装过就跳过这步
  • 运行gcloud auth login,跟着浏览器提示登录你的GCP账号,确保你有目标存储桶的读取权限
二、批量下载的两种方式(串行/并行)

假设你已经把所有要下载的文件路径整理到了gcs_files.txt里,注意路径格式必须是gs://bucket-name/xxx/xxx.zip(比如gs://my-bucket/docs/report.zip),每行一个路径。

方式1:串行下载(简单稳妥)

写个简单的bash脚本,逐个下载文件:

#!/bin/bash
while read -r file_path; do
  echo "正在下载:$file_path"
  gsutil cp "$file_path" ./
done < gcs_files.txt

把这段代码存成download.sh,给它加执行权限chmod +x download.sh,运行./download.sh就会按顺序下载所有文件到当前目录。

方式2:并行下载(速度更快)

如果文件数量多,想提速的话,用gsutil的并行模式,它会自动开启多线程同时下载:

gsutil -m cp -I ./ < gcs_files.txt

参数解释:

  • -m:启用并行操作模式
  • -I:从标准输入读取要下载的文件路径(也就是从你的txt文件里读)
  • ./:指定下载文件保存到当前目录
三、如果非要用curl怎么办?

要是你坚持想用curl,得先把文件转换成可直接下载的签名URL(因为私有存储桶的文件不能直接用网页URL下载):

  1. 先生成签名URL:用gsutil signurl -d 1h your-service-account-key.json gs://bucket-name/file.zip,这里-d 1h表示URL有效期1小时,your-service-account-key.json是你的服务账号密钥文件
  2. 把所有生成的签名URL整理到signed_urls.txt里,然后用下面的脚本批量下载:
#!/bin/bash
while read -r url; do
  # 从URL里提取文件名(去掉后面的参数)
  filename=$(basename "$url" | cut -d'?' -f1)
  echo "正在下载:$filename"
  curl -o "$filename" "$url"
done < signed_urls.txt

不过这种方法需要管理服务账号密钥,步骤繁琐,还是优先推荐用gsutil。

四、注意事项
  • 确保你的txt文件里每行都是有效的gs://路径,不要有多余空格或空行
  • 如果存储桶是私有的,一定要确认你的账号有storage.objects.get权限
  • 并行下载时不用太担心配额,个人使用的话完全没问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:53:28