将文件从远程服务器复制到 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-platform
或 https://www.googleapis.com/auth/devstorage.full_control
或 https://www.googleapis.com/auth/devstorage.read_write
。如果没有,你可以使用
set-scopes beta command 重置它们或转到控制台并编辑有问题的 VM。
如何将文件从远程服务器复制到 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-platform
或 https://www.googleapis.com/auth/devstorage.full_control
或 https://www.googleapis.com/auth/devstorage.read_write
。如果没有,你可以使用
set-scopes beta command 重置它们或转到控制台并编辑有问题的 VM。