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

时间:2017-07-08 03:53:47

标签: google-cloud-platform google-compute-engine

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

gcloud compute scp <instance-name>:~/<file-name> ~/Documents/

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

  

$ USER / Documents /:是一个目录

     

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

从本地目录复制到GCE可以正常工作。

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

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

我有点相信它可能与SSH密钥有关。

可能出了什么问题?

7 个答案:

答案 0 :(得分:15)

如果源路径和目标路径正确

,则命令正确

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

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

我也尝试过从另一端(即从我的本地机器到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

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

使用scp

进行递归复制

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

gcloud compute scp --recurse SRC_PATH DEST_PATH

答案 1 :(得分:5)

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

oyashi@oyashi-torch-instance:~$ gcloud compute scp oyashi-torch-instance:~/spring1617_assignment1.zip ~/Documents/
  

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

但是当我在我的本地终端上尝试这个时。发生了这件事。

oyashi@oyashi:~/Documents$ gcloud compute scp oyashi-torch-instance:~/spring1617_assignment1.zip ~/Documents/
  

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

感谢大家的意见和帮助。我知道这是我最后的一个愚蠢的错误。但我发布了这个答案,以便其他人可以从我的愚蠢中学习。

答案 2 :(得分:4)

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

gcloud beta compute scp --project "project_name" --zone "zone_name" instance_name:~jupyter/file_name /home/Downloads

答案 3 :(得分:3)

要将文件从vm复制到您的桌面,您只需将ssh插入vm,并在右上角有一个设置按钮,您会在其中找到download file选项,只需输入文件路径即可。如果是文件夹,则先压缩该文件夹,然后再下载。

答案 4 :(得分:0)

用于从Ubuntu vmware复制文件到本地计算机

例如:您有一个实例,名称为:bhk

答案 5 :(得分:0)

运行基本的nginx服务器并复制
/var/www/html(nginx服务目录)中的所有文件
,然后从本地计算机简单运行
wget <vm's IP>/<your file path> < br />

例如,如果我的虚拟机的IP为1.2.3.4,而我想复制/home/me/myFolder/myFile,则只需将此文件复制到/var/www/html

然后运行wget 1.2.3.4/myfile

答案 6 :(得分:0)

我遇到了同样的问题。关键是您应该从本地终端而不是云终端运行scp命令。