Как скопировать файлы из Google Compute Engine в локальный каталог

Я пытаюсь скопировать файлы из моего экземпляра в свой локальный каталог, используя следующую команду

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

Однако он показывает ошибку, как указано ниже

$USER/Documents/: Является ли каталог

ОШИБКА: (gcloud.compute.scp) [/usr/bin/scp] вышел с кодом возврата [1].

Копирование из локального каталога в GCE отлично работает.

Я также проверил учебник Стэнфорда и документацию Google.

У меня есть еще один экземпляр, где нет такой проблемы.

Я несколько верю, что это может быть проблема с ключами SSH.

Что могло быть не так?

Ответ 1

Ваша команда верна, если правильные пути источника и назначения

Команда, которую вы опубликовали в своем вопросе, работает для меня при копировании файла из виртуальной машины Google Compute Engine на мой локальный компьютер.

$ 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

Ответ 2

Все было идеально, за исключением того, что я пытался запускать эти команды на терминале, подключенном к GCE вместо локального терминала.

[email protected]:~$ gcloud compute scp oyashi-torch-instance:~/spring1617_assignment1.zip ~/Documents/

/home/oyashi/Documents/: Является ли каталог ERROR: (gcloud.compute.scp) [/usr/bin/scp] вышел с кодом возврата [1].

Но когда я попробовал это на своем локальном терминале. Это произошло.

[email protected]:~/Documents$ gcloud compute scp oyashi-torch-instance:~/spring1617_assignment1.zip ~/Documents/

spring1617_assignment1.zip 100% 42 КБ 42,0 КБ/с 00:00

Спасибо всем за их комментарии и помощь. Я знаю его глупую ошибку с моего конца. Но я отправил этот ответ, чтобы другие могли узнать из моей глупости.

Ответ 3

Чтобы скопировать файлы с виртуальной машины на рабочий стол, вы можете просто подключиться к виртуальной машине через SSH, а в правом верхнем углу есть кнопка настроек, там вы найдете опцию загрузки файла, просто введите путь к файлу.

Если это папка, то сначала заархивируйте папку, затем загрузите ее.