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

Copy files from remote server to google cloud bucket

如何将文件从远程服务器复制到 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。

提前致谢!

gsutil 支持流式数据,所以你可以尝试通过管道输入数据。

不能 100% 确定这适用于任意二进制数据(而且我在 phone 所以我无法测试它)

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

您也可以直接在您的 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。