如何将文件从谷歌计算引擎复制到本地目录

oya*_*163 17 google-compute-engine google-cloud-platform

我正在尝试使用以下命令将文件从我的实例复制到我的本地目录

gcloud compute scp <instance-name>:~/<file-name> ~/Documents/
Run Code Online (Sandbox Code Playgroud)

但是,它显示如下所述的错误

$ USER/Documents /:是一个目录

错误:(gcloud.compute.scp)[/ usr/bin/scp]退出并返回代码[1].

从本地目录复制到GCE工作正常.

我也检查过斯坦福大学的教程和谷歌的文档.

我有另一个例子,没有这样的问题.

我有点相信它可能是SSH密钥的问题.

可能出了什么问题?

Tux*_*ude 19

如果源路径和目标路径正确,则命令正确

当您将文件从Google Compute Engine VM复制到本地计算机时,您在问题中发布的命令对我有用.

$ gcloud compute scp vm1:~/.bashrc ~/Documents/
.bashrc                                          100% 3515     3.4KB/s   00:00
Run Code Online (Sandbox Code Playgroud)

我也尝试从其他方面(即从我的本地机器到GCE VM)进行复制,它可以工作:

$ gcloud compute scp ~/Documents/.bashrc vm1:~/temp/
.bashrc                                          100% 3515     3.4KB/s   00:00

$ gcloud compute scp ~/Documents/.bashrc vm1:~/.bashrc-new
.bashrc                                          100% 3515     3.4KB/s   00:00
Run Code Online (Sandbox Code Playgroud)

gcloud依赖scp于您的可执行文件PATH.您提供给gcloud scp命令的参数将传递给scp二进制文件.假设您的源和目标路径是正确的,它应该工作.

使用递归复制 scp

根据您的特定错误消息,我已经看到只有当您尝试从中复制的源路径是目录而不是文件时才会出现变体.对于这种特殊情况,您可以传递一个--recurse参数(类似于-r常规支持的参数scp),该参数将递归复制指定目录下的所有文件和目录.

gcloud compute scp --recurse SRC_PATH DEST_PATH


oya*_*163 8

一切都很完美,除了我试图在连接到GCE的终端而不是本地终端上运行这些命令。

oyashi@oyashi-torch-instance:~$ gcloud compute scp oyashi-torch-instance:~/spring1617_assignment1.zip ~/Documents/
Run Code Online (Sandbox Code Playgroud)

/ home / oyashi / Documents /:是目录错误:(gcloud.compute.scp)[/ usr / bin / scp]退出,返回码为[1]。

但是,当我在本地终端上尝试此操作时。这发生过。

oyashi@oyashi:~/Documents$ gcloud compute scp oyashi-torch-instance:~/spring1617_assignment1.zip ~/Documents/
Run Code Online (Sandbox Code Playgroud)

spring1617_assignment1.zip 100%42KB 42.0KB / s 00:00

谢谢大家的评论和帮助。我从一开始就知道这是一个愚蠢的错误。但是我发布了这个答案,以便其他人可以从我的愚蠢中学习。


小智 8

要将文件从VM复制到您的桌面,您可以简单地通过SSH到VM,并在右上角有一个设置按钮,您会在其中找到download file选项,只需输入文件路径即可。

如果是文件夹,则首先压缩该文件夹,然后下载。


Ami*_*khm 5

如果您需要传递区域信息、项目名称,您可能会喜欢这样做,因为它对我有用:实例名称是您在 GCP 实例中选择的名称。

gcloud beta compute scp --project "project_name" --zone "zone_name" instance_name:~jupyter/file_name /home/Downloads
Run Code Online (Sandbox Code Playgroud)