我正在尝试从 Google Cloud Compute(运行 Linux Debian)下载所有服务器文件。我对 SSH 和整个 Google Cloud Compute 非常不熟悉。我更愿意复制所有文件(类似于 git pull 请求)或创建 zip 并下载。简而言之,我需要将移除的 Google Cloud 服务器上的所有文件复制到我的本地机器上。
答案1
尝试使用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]
例如,
$ gcloud compute scp \
my-instance-1:~/file-1 \
my-instance-2:~/file-2 \
~/my-destination \
--zone us-central2-a
另外,您也可以使用(非gcloud
)sftp
或scp
;参见这个答案有关您需要指定的命令行参数的详细信息,为简单起见,我将在此引用:
sftp -o IdentityFile ~/.ssh/google_compute_engine user@host
要使用任何其他 SFTP 工具,同样向其提供 SSH 私钥的路径,它将能够连接到实例。但是,对于gcloud
,它可以自己将主机名解析为公共 IP;对于所有其他工具,您需要手动查找 IP 并直接指定 IP 地址。
答案2
(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 …]
例如:
$ gcloud compute scp example-instance:~/REMOTE-DIR ~/LOCAL-DIR \
--zone us-central1-a
如果区域已经设置(使用gcloud config set compute/zone ZONE
或通过环境变量,则不需要指定上面的区域)
此外,gcloud compute scp
默认情况下不会递归复制。我们需要使用标志--recurse
。
查看详细文档这里。
答案3
也许您可以使用 SFTP(Google 在其文档中使用了 Filezilla)。我不太擅长使用 CLI,因此喜欢 Filezilla 和其他提供的 GUI 选项。
以下是高层次的步骤:
- 安装并运行 gcloud SDK (
$ gcloud init
) - 生成 SSH 密钥(
$ gcloud compute ssh
) - 设置 FTP 客户端(安装并添加密钥文件)
- 使用 SFTP 客户端连接到 VM
这是文档来自谷歌。
另外,我已经记录了这一点,它可能会有所帮助:
答案4
这对我有用
句法 :
gcloud compute scp <UserName>@<ServerName/InstanceName>:~/<FilePathFromInstance> <LocalSystemFilePath>