【问题标题】:How to download multiple files in Google Cloud Storage如何在 Google Cloud Storage 中下载多个文件
【发布时间】:2016-08-25 05:06:03
【问题描述】:

场景:项目团队成员可以访问存储桶中存储的多个文件夹和许多文件。有没有一种方法可以下载整个文件夹,而不是一次下载一个文件(这非常慢且耗时)?或者一次至少有多个文件?这是否可能而无需使用其中一个命令控制台?一些团队成员不精通技术,需要尽可能简单地访问这些文件。感谢您的帮助!

【问题讨论】:

  • 他们是如何下载它们的?通过用户界面?
  • 令人难以置信的是,截至 2020 年,这样的基本选项不可用。刚到这里是因为我想一次下载整个文件夹,但无法...看起来 gsutils 选项是唯一的选项。

标签: google-cloud-storage google-cloud-platform


【解决方案1】:

我建议使用gsutil 下载文件。但是,如果您有大量文件要传输,您可能需要使用 gsutil -m 选项来执行并行(多线程/多处理)复制:

gsutil -m cp -R gs://your-bucket .

下载文件的时间可以显着减少。有关 GCS cp 命令的完整信息,请参阅此 Cloud Storage documentation

如果要复制到特定目录,请注意该目录必须首先存在,因为gsutils 不会自动创建它。 (例如:mkdir my-bucket-local-copy && gsutil -m cp -r gs://your-bucket my-bucket-local-copy

【讨论】:

    【解决方案2】:

    我建议他们使用gsutil。 GCS 的 API 一次只处理一个对象。但是,它的命令行实用程序gsutil 非常乐意并行下载一堆对象。使用 gsutil 下载整个 GCS“文件夹”非常简单:

    $> gsutil cp -r gs://my-bucket/remoteDirectory localDirectory
    

    【讨论】:

    • 嗨,有没有办法通过 python API 做到这一点,只为内容?我发现了 get_media(REST API 中的 alt=media)函数,但循环数以千计的文件非常耗时。能够一次获得特定前缀下的所有内容,这将是非常酷的。
    • 不,抱歉。循环列表调用的结果正是gsutil 所做的,除了它使用多个线程。
    【解决方案3】:

    要将文件下载到本地机器需要:

    1. 安装gsutil到本地机器

    2. 运行 Google Cloud SDK Shell

    3. 像这样运行命令(例如,对于 Windows 平台):

    gsutil -m cp -r gs://source_folder_path "%userprofile%/Downloads"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2019-01-26
      • 2018-08-03
      • 2020-02-16
      • 1970-01-01
      • 2017-11-08
      • 2016-08-19
      相关资源
      最近更新 更多