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

如何通过CSV文件使用gsutil批量下载指定GCS存储桶文件?

如何通过CSV文件批量从GCS存储桶下载指定文件?

当然可以!用CSV配合gsutil完全能实现精准批量下载,不用再逐个点或者下载整个文件夹浪费时间,我来给你一步步拆解操作方法:

第一步:准备好你的CSV文件列表

首先把你需要下载的65个文件整理成CSV,这里有两种方式:

  • 推荐:每行写完整的GCS文件路径,这样最不容易出错,比如:
    gs://your-target-bucket/docs/report-2024-01.pdf
    gs://your-target-bucket/images/header.png
    gs://your-target-bucket/data/raw/set1.csv
    
  • 如果所有文件都在同一个GCS文件夹下(比如gs://your-target-bucket/folder/),也可以只写文件名,比如:
    report-2024-01.pdf
    header.png
    set1.csv
    

注意:CSV里不要留多余的空行,否则会导致命令尝试下载空路径报错。如果文件名包含空格或特殊字符,记得用双引号把路径包起来(比如"gs://bucket/folder/file with space.txt")。

第二步:用命令读取CSV批量下载

根据你的CSV格式,选对应的命令就行:

情况1:CSV里是完整GCS路径

方法1:用xargs快速执行(适合大多数场景)

这个方法简洁高效,直接把CSV里的每行作为参数传给gsutil:

cat your-file-list.csv | xargs -I {} gsutil cp {} /your/local/destination/folder/

如果想开启并行下载(和gsutil -m一样提升速度),可以用parallel工具(如果没装,Linux用apt install parallel,Mac用brew install parallel):

cat your-file-list.csv | parallel gsutil cp {} /your/local/destination/folder/

可以加--jobs N参数控制并发数,比如--jobs 10,避免请求过多被限制。

方法2:用bash循环(更直观,适合新手调试)

如果想看到每个文件的下载进度或调试问题,用循环更清晰:

while IFS= read -r file_path; do
  echo "正在下载:$file_path"
  gsutil cp "$file_path" /your/local/destination/folder/
done < your-file-list.csv

这里的IFS=和read -r是为了正确处理带空格或特殊字符的文件名,别漏掉哦。

情况2:CSV里只有文件名(统一在某个GCS文件夹下)

只需要在循环里给每个文件名加上GCS前缀就行:

while IFS= read -r filename; do
  gsutil cp "gs://your-target-bucket/folder/$filename" /your/local/destination/folder/
done < your-file-list.csv

小提示

下载完成后,可以用简单的命令验证是否所有文件都成功下载:

# 统计CSV里的文件数
wc -l your-file-list.csv
# 统计本地文件夹的文件数
ls /your/local/destination/folder/ | wc -l

如果数字一致,基本就没问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:46:22