Wie kann ich Dateien von einem Google Cloud Compute Server auf meinen lokalen Computer kopieren?

11

Ich versuche, alle Serverdateien von Google Cloud Compute (unter Linux Debian) herunterzuladen. Ich bin mit SSH und Google Cloud Compute insgesamt äußerst unbekannt. Ich würde es vorziehen, entweder alle Dateien zu kopieren (ähnlich einer Git-Pull-Anfrage) oder eine Zip-Datei zu erstellen und herunterzuladen. Kurz gesagt, ich muss alle Dateien auf dem entfernten Google Cloud-Server auf meinen lokalen Computer kopieren.

Vielen Dank im Voraus.

user1890328
quelle
Vielleicht kann dies Ihnen eine andere Option geben stackoverflow.com/a/27792823/2406499
user145422

Antworten:

12

Versuchen Sie es mit 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]

z.B,

$ gcloud compute scp \
    my-instance-1:~/file-1 \
    my-instance-2:~/file-2 \
    ~/my-destination \
    --zone us-central2-a

Alternativ können Sie auch (nicht gcloud) sftpoder scp; In dieser SO-Antwort finden Sie Details zu den Befehlszeilenargumenten, die Sie angeben müssen. Der Einfachheit halber werde ich hier zitieren:

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

Um ein anderes SFTP-Tool zu verwenden, geben Sie ihm auf ähnliche Weise den Pfad zum privaten SSH-Schlüssel an, damit eine Verbindung zur Instanz hergestellt werden kann. Im Fall von gcloudkann der Hostname jedoch selbst in die öffentliche IP aufgelöst werden. Für alle anderen Tools müssen Sie die IP manuell suchen und die IP-Adresse direkt angeben.

Mischa Brukman
quelle
Genial. Gibt es eine Möglichkeit, Dateien zu entfernen und sie beim Kopieren zu löschen?
Mann Kerl
@MCllorf - Ich bin nicht sicher, ob ich dem folge, was Sie fragen. Können Sie bitte eine weitere Frage mit weiteren Details und dem Anwendungsfall oder Ziel, das Sie erreichen möchten, öffnen?
Mischa Brukman
1
Entschuldigung, ich hätte das definitiv besser formulieren können. Mein Ziel war es, die Datei an einen anderen Ort zu kopieren und dann das Original zu löschen, damit es nicht unnötig Speicherplatz beansprucht. Ich habe es aber schon herausgefunden :) danke!
Mann Kerl
5

( gcloud compute copy-filesist jetzt veraltet, daher gcloud compute scpwird empfohlen)

Verwenden Sie gcloud compute scpwie folgt:

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 …]

Zum Beispiel:

$ gcloud compute scp example-instance:~/REMOTE-DIR ~/LOCAL-DIR \
      --zone us-central1-a

Wenn die Zone bereits festgelegt ist (mithilfe gcloud config set compute/zone ZONEoder über die Umgebungsvariable, müssen Sie die obige Zone nicht angeben).

Außerdem gcloud compute scpkopiert nicht rekursiv standardmäßig. Wir müssen die --recurseFlagge dafür verwenden.

Die ausführliche Dokumentation finden Sie hier .

Anupam
quelle
2

Vielleicht können Sie SFTP verwenden (Google verwendet Filezilla in ihren Dokumenten). Ich bin nicht sehr gut mit CLI und mag daher die GUI-Optionen, die Filezilla und andere bieten.

Hier sind die Schritte auf hohem Niveau:

  1. Installieren und führen Sie das gcloud SDK aus ( $ gcloud init)
  2. SSH-Schlüssel generieren ( $ gcloud compute ssh)
  3. Richten Sie den FTP-Client ein (installieren Sie die Schlüsseldatei und fügen Sie sie hinzu).
  4. Stellen Sie über den SFTP-Client eine Verbindung zur VM her

Und hier ist die Dokumentation von Google.

Auch ich habe dies aufgezeichnet, es könnte hilfreich sein:

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

Naresh MG
quelle
0

Das hat bei mir funktioniert

Syntax :

gcloud compute scp <UserName>@<ServerName/InstanceName>:~/<FilePathFromInstance> <LocalSystemFilePath>
Viraj.Hadoop
quelle
0

Wenn Sie über ein von Google Cloud Console bereitgestelltes webbasiertes Terminal eine Verbindung zur Instanz herstellen, können Sie auf das Zahnrad in der oberen rechten Ecke klicken und "Datei herunterladen" auswählen. Geben Sie dann den vollständigen Pfad zur Datei ein und die Datei wird über den Browser heruntergeladen . Gleiches gilt für das Hochladen.

Geben Sie hier die Bildbeschreibung ein

DataGreed
quelle