wake-up-neo.net

So kopieren Sie Dateien von der Google Compute Engine in das lokale Verzeichnis

Ich versuche, Dateien mit folgendem Befehl von meiner Instanz in mein lokales Verzeichnis zu kopieren

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

Es wird jedoch ein Fehler angezeigt, wie unten erwähnt

$ USER/Documents /: Ist ein Verzeichnis

FEHLER: (gcloud.compute.scp) [/ usr/bin/scp] wurde mit dem Rückkehrcode [1] beendet.

Das Kopieren aus dem lokalen Verzeichnis nach GCE funktioniert einwandfrei.

Ich habe auch Stanfords Tutorial und Googles Dokumentation überprüft.

Ich habe noch ein Beispiel, bei dem es kein Problem gibt.

Ich glaube irgendwie, dass es ein Problem mit SSH-Schlüsseln sein könnte.

Was könnte schief gegangen sein?

13
oya163

Ihr Befehl ist korrekt, wenn Ihre Quell- und Zielpfade korrekt sind

Der Befehl, wie Sie ihn in Ihrer Frage gepostet haben, funktioniert für mich, wenn Sie eine Datei von der Google Compute Engine VM auf meinen lokalen Computer kopieren.

$ gcloud compute scp vm1:~/.bashrc ~/Documents/
.bashrc                                          100% 3515     3.4KB/s   00:00

Ich habe auch versucht, die Kopie von einer anderen Seite (d. H. Von meinem lokalen Computer auf die GCE-VM) auszuführen, und es funktioniert:

$ 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 basiert auf der ausführbaren scp-Datei in Ihrer PATH. Die Argumente, die Sie für den Befehl gcloud scp angeben, werden an die Variable scp übergeben. Vorausgesetzt, Ihre Quell- und Zielpfade sind korrekt, sollte dies funktionieren.

Rekursives Kopieren mit scp

Basierend auf Ihrer speziellen Fehlermeldung wurde jedoch festgestellt, dass die Variation nur angezeigt wird, wenn der Quellpfad, aus dem Sie kopieren möchten, ein Verzeichnis und keine Datei ist. Für diesen speziellen Fall können Sie ein --recurse-Argument übergeben (ähnlich dem -r-Argument, das von der regulären scp unterstützt wird), das alle Dateien und Verzeichnisse unter dem angegebenen Verzeichnis rekursiv kopiert.

gcloud compute scp --recurse SRC_PATH DEST_PATH

13
Tuxdude

Alles war perfekt, außer ich habe versucht, diese Befehle auf dem mit GCE verbundenen Terminal auszuführen, anstatt mit einem lokalen Terminal.

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

/ home/oyashi/Documents /: Ist ein Verzeichnis ERROR: (gcloud.compute.scp) [/ usr/bin/scp] wurde mit dem Rückkehrcode [1] beendet.

Aber als ich es an meinem lokalen Terminal ausprobierte. Das ist passiert.

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

spring1617_assignment1.Zip 100% 42KB 42.0KB/s 00:00

Vielen Dank an alle für ihre Kommentare und Hilfe. Ich weiß, dass es ein dummer Fehler von meinem Ende ist. Aber ich habe diese Antwort gepostet, damit andere von meiner Dummheit lernen können. 

4
oya163

um Dateien von VM auf Ihren Desktop zu kopieren, können Sie einfach SSH in die VM einbinden. In der oberen rechten Ecke befindet sich eine Schaltfläche Einstellungen. Dort finden Sie die Option zum Herunterladen der Datei. Wenn es sich um einen Ordner handelt, zippen Sie zuerst den Ordner und laden Sie ihn dann herunter.

1