如何将文件从 Google Cloud Compute Server 复制到本地计算机

use*_*328 13 linux ssh google-compute-engine

我正在尝试从 Google Cloud Compute(运行 Linux Debian)下载所有服务器文件。我对 SSH 和 Google Cloud Compute 作为一个整体非常不熟悉。我更喜欢复制所有文件(类似于 git pull 请求)或创建 zip 并下载。简而言之,我需要将删除 Google Cloud 服务器上的所有文件复制到我的本地机器上。

先感谢您。

Mis*_*man 14

尝试使用gcloud compute scp

gcloud compute scp 
  [[USER@]INSTANCE:]SRC [[[USER@]INSTANCE:]SRC …]
  [[USER@]INSTANCE:]DEST
  [--compress] [--dry-run] [--force-key-file-overwrite]
  [--plain] [--port=PORT] [--recurse] [--scp-flag=SCP_FLAG]
  [--ssh-key-file=SSH_KEY_FILE]
  [--strict-host-key-checking=STRICT_HOST_KEY_CHECKING]
  [--zone=ZONE]
  [GCLOUD_WIDE_FLAG …]
  [-h]
Run Code Online (Sandbox Code Playgroud)

例如,

$ gcloud compute scp \
    my-instance-1:~/file-1 \
    my-instance-2:~/file-2 \
    ~/my-destination \
    --zone us-central2-a
Run Code Online (Sandbox Code Playgroud)

作为替代方案,您还可以使用 (non- gcloud)sftpscp; 有关您需要指定的命令行参数的详细信息,请参阅此 SO 答案,为简单起见,我将在此处引用:

sftp -o IdentityFile ~/.ssh/google_compute_engine user@host
Run Code Online (Sandbox Code Playgroud)

要使用任何其他 SFTP 工具,类似地向其提供 SSH 私钥的路径,它将能够连接到实例。但是,在 的情况下gcloud,它可以自己将主机名解析为公共 IP;对于所有其他工具,您需要手动查找 IP 并直接指定 IP 地址。


Anu*_*pam 5

gcloud compute copy-files现已弃用,因此gcloud compute scp推荐)

使用gcloud compute scp方法如下:

gcloud compute scp [[USER@]INSTANCE:]SRC [[[USER@]INSTANCE:]SRC …]
[[USER@]INSTANCE:]DEST [--compress] [--dry-run] [--force-key-file-overwrite]
[--plain] [--port=PORT] [--recurse] [--scp-flag=SCP_FLAG] 
[--ssh-key-file=SSH_KEY_FILE] [--strict-host-key-checking=STRICT_HOST_KEY_CHECKING]
[--zone=ZONE] [GCLOUD_WIDE_FLAG …]
Run Code Online (Sandbox Code Playgroud)

例如:

$ gcloud compute scp example-instance:~/REMOTE-DIR ~/LOCAL-DIR \
      --zone us-central1-a
Run Code Online (Sandbox Code Playgroud)

如果zone已经设置好了(使用gcloud config set compute/zone ZONE或者通过环境变量,那么就不需要在上面指定zone了)

此外,gcloud compute scp默认情况下不递归复制。我们需要为此使用--recurse标志。

请参阅此处的详细文档。