Как скопировать файлы из 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, а в правом верхнем углу есть кнопка настроек, там вы найдете опцию загрузки файла, просто введите путь к файлу.
Если это папка, то сначала заархивируйте папку, затем загрузите ее.