cloud/gsutil 将文件从实例复制到存储桶
cloud/gsutil copy files from instance to bucket
我已经从实例内部尝试了 gsutil rsync/cp,它可以工作。
我正在寻找一种方法 运行 使用 gcloud/gsutil cli 从本地计算机同步。
是否有像 gcloud compute scp 这样的命令可以从实例同步到存储桶?
[编辑]
我查看了官方文档,但找不到这样的示例。
如果我了解到您想 运行 在云外的机器上执行命令 ,这将在 云 VM 之间同步文件 和一个桶,然后不,没有这样的命令,这在设计上是不可能的。想一想:一个虚拟机可以运行Linux、Windows,甚至是你自己开发的OS。 (还记得 Linus Torvalds 那个曾经只是为了好玩而这样做的人吗?这个。)这不可能由 GCE 本身支持。出于同样的原因,这甚至在另一个 VM 上也是不可能的,不仅仅是在您的本地计算机上。
但是,只要您可以从本地计算机通过 ssh 连接到实例,同样的 gsutil rsync ...
也可以通过 ssh 连接正常工作:
ssh instance-1 'gsutil rsync ...'
只是不要错过或弄乱引号。如果您使用 gcloud compute ssh
而不是仅 ssh
登录实例,则将改为(注意 --
告诉 gcloud
应传递其余参数至 ssh
).
gcloud compute ssh instance-1 -- 'gsutil rsync ...'
gsutil
无论您在哪里调用命令,都可以在两个存储桶之间有效地复制和同步数据;数据永远不会离开云端。这是可能的,因为水桶是 Google 自己的装置,它们完全控制 API。但是进入一个工作的虚拟机 运行 随机 OS 和 reading/writing 文件是根本不可能的。
此技术甚至适用于整个内联 shell 脚本。例如,这是我用来设置新实例的脚本的一部分(我产生了很多临时虚拟机,所以我想要一个解决方案,例如缺少 bash 完成包等):
ssh "$target" '
set -eu
cd ~
if [[ -f .kkm-config-done ]]; then
echo "### STOP: .kkm-config-done exists, not overwriting files"
exit 1
. . . .
'
注意单独的单引号,结束唯一的 ssh
参数。
切线:阅读 IAP 隧道,它可以让你通过 ssh 进入你的实例,而不会将监听的 ssh 端口暴露给整个互联网(hic sunt dracones :))。它们是免费的并且非常安全。在一般情况下,只需将 --tunnel-through-iap
开关添加到 gcloud compute ssh
命令即可。指针在此开关的文档中。
我已经从实例内部尝试了 gsutil rsync/cp,它可以工作。 我正在寻找一种方法 运行 使用 gcloud/gsutil cli 从本地计算机同步。 是否有像 gcloud compute scp 这样的命令可以从实例同步到存储桶? [编辑] 我查看了官方文档,但找不到这样的示例。
如果我了解到您想 运行 在云外的机器上执行命令 ,这将在 云 VM 之间同步文件 和一个桶,然后不,没有这样的命令,这在设计上是不可能的。想一想:一个虚拟机可以运行Linux、Windows,甚至是你自己开发的OS。 (还记得 Linus Torvalds 那个曾经只是为了好玩而这样做的人吗?这个。)这不可能由 GCE 本身支持。出于同样的原因,这甚至在另一个 VM 上也是不可能的,不仅仅是在您的本地计算机上。
但是,只要您可以从本地计算机通过 ssh 连接到实例,同样的 gsutil rsync ...
也可以通过 ssh 连接正常工作:
ssh instance-1 'gsutil rsync ...'
只是不要错过或弄乱引号。如果您使用 gcloud compute ssh
而不是仅 ssh
登录实例,则将改为(注意 --
告诉 gcloud
应传递其余参数至 ssh
).
gcloud compute ssh instance-1 -- 'gsutil rsync ...'
gsutil
无论您在哪里调用命令,都可以在两个存储桶之间有效地复制和同步数据;数据永远不会离开云端。这是可能的,因为水桶是 Google 自己的装置,它们完全控制 API。但是进入一个工作的虚拟机 运行 随机 OS 和 reading/writing 文件是根本不可能的。
此技术甚至适用于整个内联 shell 脚本。例如,这是我用来设置新实例的脚本的一部分(我产生了很多临时虚拟机,所以我想要一个解决方案,例如缺少 bash 完成包等):
ssh "$target" '
set -eu
cd ~
if [[ -f .kkm-config-done ]]; then
echo "### STOP: .kkm-config-done exists, not overwriting files"
exit 1
. . . .
'
注意单独的单引号,结束唯一的 ssh
参数。
切线:阅读 IAP 隧道,它可以让你通过 ssh 进入你的实例,而不会将监听的 ssh 端口暴露给整个互联网(hic sunt dracones :))。它们是免费的并且非常安全。在一般情况下,只需将 --tunnel-through-iap
开关添加到 gcloud compute ssh
命令即可。指针在此开关的文档中。