8

Я пытаюсь загрузить все файлы сервера из Google Cloud Compute (работает под управлением Linux Debian). Я крайне незнаком с SSH и Google Cloud Compute в целом. Я бы предпочел либо скопировать все файлы (аналогично запросу git pull), либо создать zip-файл и загрузить его. Короче говоря, мне нужно скопировать все файлы с удаленного сервера Google Cloud на мой локальный компьютер.

Заранее спасибо.

3 ответа3

10

Попробуйте использовать 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 см. этот SO-ответ для подробностей об аргументах командной строки, которые вам нужно указать, которые я приведу здесь для простоты:

sftp -o IdentityFile ~/.ssh/google_compute_engine user@host

Чтобы использовать любой другой инструмент SFTP, аналогично укажите ему путь к закрытому ключу SSH, и он сможет подключиться к экземпляру. Однако в случае с gcloud он может разрешить имя хоста в публичный IP-адрес; для всех остальных инструментов вам нужно будет найти IP-адрес вручную и указать IP-адрес напрямую.

3

(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 .

Смотрите подробную документацию здесь.

2

Может быть, вы можете использовать SFTP (Google использовал Filezilla в своих документах). Я не слишком хорош с CLI и, следовательно, как параметры графического интерфейса Filezilla и другие.

Вот шаги на высоком уровне:

  1. Установите и запустите gcloud SDK ($ gcloud init)
  2. Создать ключ SSH ($ gcloud compute ssh)
  3. Настройте FTP-клиент (установите и добавьте файл ключа)
  4. Подключитесь к виртуальной машине с помощью клиента SFTP

А вот документация от Google.

Кроме того, я записал это, это может быть полезно:

https://www.youtube.com/watch?v=9ssfE6ODpak

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .