通过 gcloud compute scp 成功上传后在主目录中找不到文件
Posted
技术标签:
【中文标题】通过 gcloud compute scp 成功上传后在主目录中找不到文件【英文标题】:cannot find file on home directory after successfully uploading via gcloud compute scp 【发布时间】:2019-03-08 03:07:33 【问题描述】:我尝试将一个名为 kaldi.sh 的文件上传到谷歌云虚拟机。
所以我按照https://cloud.google.com/compute/docs/gcloud-compute/ 的指导尝试了gcloud compute scp kaldi.sh vandys-0:~/experiment
。更加具体:
kaldi.sh
是我要上传的文件,vandys-0
是我的实例名称,experiment
是我要上传到的目录。
代码运行良好,但是当我激活 google cloud vm shell 并进入路径为 ~/experiemnt
的目录时(我相信与 /home/[username]/experiment
相同?)。我在实验目录中的ls
中一无所获。
我尝试在命令中使用gcloud compute scp kaldi.sh [username]@vandys-0:~/experiment
。但它因错误而失败:
[用户名]@35.196.87.176:权限被拒绝(公钥)。
连接中断
任何想法都会有所帮助。
【问题讨论】:
您要复制的文件位于您要复制到的user
下。在这种情况下,它是vandys-0
。首先切换到vandys-0
用户,然后执行ls
【参考方案1】:
计算引擎的 VM 实例不同于用于运行云 VM shell 的虚拟机。当您启动云 VM shell 时,它会生成自己的(唯一)虚拟机实例。 shell 的目的只是提供一个环境,您可以在其中运行 gcloud(或类似的)管理命令。我认为发生的事情是您将文件上传到您的真实计算引擎实例,然后打开云外壳,这将导致为您生成一个分离的(不相关的)实例。这些不会共享文件系统数据,因此您的文件似乎丢失了。
要访问将文件复制到的 VM 实例,我们可以使用控制台浏览器中的 SSH 窗口。 SSH 窗口可以从 VM Instances 页面上的 GCP 控制台打开。
【讨论】:
嗨@Kolban,我现在明白了。但问题是,如果我无法通过 shell 找到上传的本地文件,我该如何使用它? 你好,我们现在进入了一个新的谜题。让我们假设您已经创建了一个名为 MYBUCKET 的云存储桶,并且您的磁盘上有一个名为 myshell.sh 的源文件。如果您希望将其复制到 Cloud Shell,则将 shell 脚本文件复制到存储桶,然后在云 shell 中,从存储桶复制源代码。$ gsutil cp myshell.sh gs://MYBUCKET
和 VM shell 上:$ gsutil cp gs:://MYBUCKET/myshell.sh .
你的意思是我们必须使用桶来转移?那我就一头雾水了,gcloud compute scp不能上传文件到shell有什么用?
在 GCP 中,您可以创建任意数量的 VM 实例……每个实例都是通过“计算引擎”创建的。当您使用 gcloud compute scp
时,您将命名您之前创建的 VM 实例之一。当您使用控制台云外壳时,它会创建一个额外的虚拟机,专门用于快速输入虚拟机任何特定实例外部的命令。
谢谢@Kolban。我完全理解外壳创建了另一个虚拟机。但正如你所说,gcloud compute scp 确实向我的目标实例发送了一些东西。我只想知道如何访问这些文件(上传到我创建的实例)?以上是关于通过 gcloud compute scp 成功上传后在主目录中找不到文件的主要内容,如果未能解决你的问题,请参考以下文章
ERROR.(gcloud.compute.instance-groups.managed.rolling-action.replace)无法获取资源。(gcloud.compute.instance
ERROR.(gcloud.compute.instance-groups.managed.rolling-action.replace)无法获取资源。(gcloud.compute.instance