将文件从远程服务器复制到谷歌云存储桶

时间:2017-07-02 21:46:08

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

如何将文件从远程服务器复制到Google存储桶?例如,

gcloud compute scp username@server:/path/to/file gs://my-bucket

此方法提供错误:All sources must be local files when destination is remote.

此外,gsutil仅支持cp而不支持scp。

提前致谢!

2 个答案:

答案 0 :(得分:3)

您还可以在GCE VM上直接执行gsutil命令(大多数VM映像都预装了Cloud SDK)。例如:

gcloud compute ssh user@server --zone my_zone \
  --command='gsutil cp path/to/my_file gs://MY_BUCKET'

请注意,要使其运行,与VM关联的服务帐户必须具有适当的GCS访问范围。如果你运行

gcloud beta compute instances describe my_instance --zone my_zone \
  --format="value(serviceAccounts.scopes)"

它将显示为VM服务帐户设置的范围列表。确保您有https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/devstorage.full_controlhttps://www.googleapis.com/auth/devstorage.read_write。如果没有,你可以使用 set-scopes beta command重置它们或转到控制台并编辑有问题的VM。

答案 1 :(得分:-1)

gsutil支持流数据,因此您可以尝试管道数据。

不是100%肯定这适用于任意二进制数据(我在手机上,所以我无法测试它)

gcloud compute ssh username@server --command='cat /path/to/file' | gsutil cp - gs://my-bucket