如何在GCP中下载整个存储桶?

时间:2019-10-27 17:50:02

标签: google-cloud-platform google-cloud-shell

我在GCP中下载整个文件夹时遇到问题。我应该如何下载整个存储桶?我在GCP Shell环境中运行以下代码:

gsutil -m cp -R gs://my-uniquename-bucket ./C:\Users\Myname\Desktop\Bucket

,我收到一条错误消息:“ CommandException:目标URL必须为cp命令的多源形式命名目录,存储桶或存储桶子目录。CommandException:无法传输7个文件/对象。”

有人可以在代码行中指出错误吗?

shareeditflag

4 个答案:

答案 0 :(得分:3)

错误位于错误消息指定的destination URL内。

  

我在GCP Shell环境中运行此代码

请记住,您是从 Cloud Shell 运行命令,而不是在本地终端或Windows命令行中运行命令。因此,抛出该错误是因为它找不到您指定的路径。如果您检查Cloud Shell的文件系统/结构,则与Unix环境中的文件系统/结构更像,在其中您可以指定目的地,例如~/bucketfiles/。由于Cloud Shell可以识别当前目录gsutil -m cp -R gs://bucket-name.appspot.com ./,因此即使是简单的./也可以使用。

解决此问题的方法是在Windows命令行上执行命令。您必须事先install Google Cloud SDK

或者,这也可以在Cloud Shell中完成,尽管需要执行额外的步骤:

  1. 运行gsutil -m cp -R gs://bucket-name ~/下载存储桶对象,这会将其下载到Cloud Shell的主目录中
  2. 通过User Interface或通过运行gcloud alpha cloud-shell scp,将~/(主)目录中下载的文件从Cloud Shell传输到本地计算机

答案 1 :(得分:2)

您的目标路径无效:

./C:\Users\Myname\Desktop\Bucket

更改为:

/Users/Myname/Desktop/Bucket

C:是保留的设备名称。您不能在相对路径中指定保留的设备名称。 ./C:无效。

答案 2 :(得分:2)

要下载整个存储桶,您必须install google cloud SDK

然后运行这个命令

gsutil -m cp -R gs://project-bucket-name path/to/local

其中 path/to/local 是您机器的本地存储路径

答案 3 :(得分:0)

没有一种通过Cloud Shell将完整存储桶下载到本地计算机的一键式解决方案。

对于像您这样的环境(仅使用Cloud Shell界面,而未在本地系统上安装gcloud的环境)的最佳选择是遵循以下步骤:

  • 在Cloud Shell环境上下载整个存储桶
  • 压缩存储桶中的内容
  • 上传压缩文件
  • 通过浏览器下载文件
  • 清理:
    • 删除本地文件(在Cloud Shell上下文中为本地)
    • 删除压缩的存储桶文件
  • 在本地将存储桶解压缩

其优点是只需要在本地计算机上下载一个文件即可。

对于非开发人员来说,这似乎有很多步骤,但实际上非常简单:

首先,在Cloud Shell上运行它:

mkdir /tmp/bucket-contents/
gsutil -m cp -R gs://my-uniquename-bucket /tmp/bucket-contents/
pushd /tmp/bucket-contents/ 
zip -r /tmp/zipped-bucket.zip .
popd
gsutil cp /tmp/zipped-bucket.zip gs://my-uniquename-bucket/zipped-bucket.zip

然后,通过以下链接下载压缩文件:https://storage.cloud.google.com/my-uniquename-bucket/zipped-bucket.zip

最后,清理:

rm -rf /tmp/bucket-contents
rm /tmp/zipped-bucket.zip
gsutil rm gs://my-uniquename-bucket/zipped-bucket.zip

完成这些步骤后,您将在本地系统中拥有一个zipped-bucket.zip文件,您可以使用所选工具将其解压缩。

请注意,如果存储桶中有太多数据并且Cloud Shell环境无法存储所有数据,这可能不起作用,但是您可以在文件夹而不是存储桶上重复相同的步骤以使大小可管理。 / p>