cloud/gutil将文件从实例复制到bucket



我已经在实例内部尝试了gsutil rsync/cp,它很有效。我正在寻找一种使用gcloud/gsutilcli从本地机器运行同步的方法。有没有像gcloudcompute-scp这样的命令可以从实例同步到bucket?[编辑]我查阅了官方文件,找不到这样的例子。

如果我知道你想在云之外的机器上运行一个命令,该命令将在云VM和bucket之间rsync文件,那么不,没有这样的命令,这在设计上是不可能的。想想看:虚拟机可以运行Linux、Windows,甚至是你自己开发的操作系统。(还记得那个Linus Torvalds的家伙吗?他曾经这样做只是为了好玩?这个。(这是GCE本身不可能支持的。出于同样的原因,即使从另一个虚拟机,而不仅仅是从您的本地计算机,这也是不可能的。

然而,只要您可以从本地机器ssh到实例,相同的gsutil rsync ...在ssh连接上也可以正常工作:

ssh instance-1 'gsutil rsync ...'

只是不要错过或打乱报价。如果使用gcloud compute ssh而不是仅使用ssh登录实例,则会改为(请注意--,它会告诉gcloud应将其余参数传递给ssh(。

gcloud compute ssh instance-1 -- 'gsutil rsync ...'

无论在哪里调用命令,gsutil都能有效地在两个存储桶之间复制和rsyncs数据;数据永远不会离开云。这是可能的,因为桶是谷歌自己的装置,他们完全控制他们的API。但是,进入运行随机操作系统的工作虚拟机并读取/写入文件是完全不可能的。


此技术甚至适用于整个内联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:((。他们是自由的,非常安全。在一个琐碎的情况下,它就像在gcloud compute ssh命令中添加--tunnel-through-iap开关一样简单。指针在该开关的文档中。

相关内容

  • 没有找到相关文章

最新更新