我在GCP中下载整个文件夹时遇到问题。我应该如何下载整个存储桶?我在GCP Shell环境中运行以下代码:
gsutil -m cp -R gs://my-uniquename-bucket ./C:\Users\Myname\Desktop\Bucket
,我收到一条错误消息:“ CommandException:目标URL必须为cp命令的多源形式命名目录,存储桶或存储桶子目录。CommandException:无法传输7个文件/对象。”
有人可以在代码行中指出错误吗?
shareeditflag
答案 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中完成,尽管需要执行额外的步骤:
gsutil -m cp -R gs://bucket-name ~/
下载存储桶对象,这会将其下载到Cloud Shell的主目录中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上运行它:
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>