在 GCP CE 中将文件从一个 VM 传输到另一个 VM
Transfer files from one VM to another in GCP CE
我正在尝试使用 scp 方法将文件从一个 VM 实例移动到另一个实例。但是我知道不可能从源实例进行直接传输。例如
scp db.sql user@instance-src:/home/data/db.sql
我尝试使用 gcloud scp 命令,但这只允许我进行从本地到远程的传输。这意味着我需要先从源下载文件到本地。
有没有更好的方法来完成这个任务?
不使用 ssh
可能更简单的选择是使用 GCS 存储桶作为复制过程中的中间、临时存储。
gcloud
CLI 和用于此目的的配套 gsutil
工具应安装在每个 VM 中。
请注意,您需要 grant write access to the bucket to the Compute Engine default service account 此设置才能正常工作。
首先您需要使用命令 ssh-keygen
在 source-vm 上创建 public 键然后您可以使用命令 cat .ssh/id_rsa.pub
看到 public 键。现在将源 VM 实例的 public 键添加到目标 vm 实例的 /home/user-name/.ssh/authorized_keys。现在,您可以像@Johnhanley 所说的那样将文件从源虚拟机传输到目标虚拟机。
或者,使用以下命令,您可以使用以下 gcloud 命令将文件从一个 VM 传输到另一个 VM:
gcloud compute ssh source-vm --command='scp db.sql user@destination-vm:/home/file-transfer-location --zone=us-central1-a'
我正在尝试使用 scp 方法将文件从一个 VM 实例移动到另一个实例。但是我知道不可能从源实例进行直接传输。例如 scp db.sql user@instance-src:/home/data/db.sql
我尝试使用 gcloud scp 命令,但这只允许我进行从本地到远程的传输。这意味着我需要先从源下载文件到本地。
有没有更好的方法来完成这个任务?
不使用 ssh
可能更简单的选择是使用 GCS 存储桶作为复制过程中的中间、临时存储。
gcloud
CLI 和用于此目的的配套 gsutil
工具应安装在每个 VM 中。
请注意,您需要 grant write access to the bucket to the Compute Engine default service account 此设置才能正常工作。
首先您需要使用命令 ssh-keygen
在 source-vm 上创建 public 键然后您可以使用命令 cat .ssh/id_rsa.pub
看到 public 键。现在将源 VM 实例的 public 键添加到目标 vm 实例的 /home/user-name/.ssh/authorized_keys。现在,您可以像@Johnhanley 所说的那样将文件从源虚拟机传输到目标虚拟机。
或者,使用以下命令,您可以使用以下 gcloud 命令将文件从一个 VM 传输到另一个 VM:
gcloud compute ssh source-vm --command='scp db.sql user@destination-vm:/home/file-transfer-location --zone=us-central1-a'