Wie kopiere ich eine Datei von einem Remote-Server auf einen lokalen Computer?


238

In meiner Terminal-Shell habe ich mich in einen Remote-Server und cdin das gewünschte Verzeichnis verwandelt .

In diesem Verzeichnis befindet sich eine Datei table, die ich auf meinen lokalen Computer kopieren möchte /home/me/Desktop.

Wie kann ich das machen?

Ich habe versucht, scp table /home/me/Desktopaber es gab einen Fehler über keine solche Datei oder Verzeichnis.

Weiß jemand, wie man das macht?


Wenn Sie häufig mit scp kopieren, können Sie das Remote-Verzeichnis in Ihrem Dateibrowser mounten und per Drag & Drop verschieben. Auf meinem Ubuntu 15-Host ist es unter der Menüleiste "Gehe zu"> "Ort eingeben"> debian@10.42.4.66:/home/debian. Alternativ kann man sshfsdas Dateisystem des entfernten Rechners auf dem Host mounten. Aber dieses Setup ist etwas komplizierter.
ConvexMartian

Probieren Sie rsynces aus. Es ist großartig sowohl für lokale als auch für Remote-Kopien, gibt Ihnen
Kopierfortschritt

Antworten:


381

Die Syntax für scplautet:

Wenn Sie sich auf dem Computer befinden, von dem aus Sie eine Datei an einen Remotecomputer senden möchten:

scp /file/to/send username@remote:/where/to/put

Hierbei remotekann es sich um einen vollqualifizierten Domänennamen oder eine IP-Adresse handeln.

Auf der anderen Seite, wenn Sie sich auf dem Computer befinden, der Dateien von einem Remotecomputer empfangen möchte:

scp username@remote:/file/to/send /where/to/put

scp kann auch Dateien zwischen zwei Remote-Hosts senden:

scp username@remote_1:/file/to/send username@remote_2:/where/to/put

Die grundlegende Syntax lautet also:

scp username@source:/location/to/file username@destination:/where/to/put

Sie können lesen man scp, um mehr Ideen dazu zu bekommen.


4
Was ist, wenn ich mehrere Dateien kopieren möchte? Ich habe ein Leerzeichen hinzugefügt und einfach ein anderes verwendet. /file/to/sendDanke für deine tolle Antwort!
Camdixon

6
scp -rkopiert rekursiv.
Henry

Was ich möchte, um die Dateien aus dem Netzwerk auf meine VM zu kopieren ... wie das gleiche mit scp zu erreichen
Sushivam

2
@heemayl +1 für die gute Antwort. In dem Fall, dass es sich um eine sichere Verbindung handelt (für die eine Authentifizierung erforderlich ist), können Sie Folgendes verwenden (zum Kopieren der Datei von lokal nach remote): scp -i mykey.pem somefile.txt root@remotehost.ip.address : / some / folder / in / remote
Guy Avraham

1
Verwenden Sie scp -P 123diese
Option

14

Sie können rsyncals Alternative verwenden. Es dient hauptsächlich zum Synchronisieren von Dateien. Sie können es jedoch auch für diesen Zweck verwenden.

rsync -avzh --stats --progress remoteuser@remoteip  localpath 

So fügen Sie SSH-Optionen hinzu:

rsync -e "ssh -P $port_value" remoteuser@remoteip  localpath

--progressund --statssind nützlich für die Echtzeitanzeige der Übertragung.


12
scp root@10.240.179.4:/root/Jmeter/reports.jtl Downloads/

4
Ich mag diese Art von Antwort.
Xtluo

8
scp username@ipaddress:pathtofile localsystempath

scp sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

Wenn Sie mit Port verwenden:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

Dadurch wird die Datei in dasselbe Remote-Verzeichnis kopiert.
Max Yudin

3

Wenn Sie vollständig alle im Netzwerk vertrauen und Sie können einen Port der Zielmaschine direkt anschließen, können Sie netcat verwenden nc.

Angenommen, die IP-Adresse des Zielcomputers lautet 192.168.1.123

Auf dem Ziellauf:

nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir

Sie können einen anderen Port auswählen und sich auch an eine andere IP-Adresse Ihrer Schnittstellen binden. 0.0.0.0 erfasst nur alle Schnittstellen.

Auf dem Quelllauf:

tar zxcf - filename | nc 192.168.1.123 7777

IMHO ist dies die schnellste Möglichkeit, eine Datei über digitale Netzwerke von einem Computer zu einem anderen zu senden.

Die Argumente und Befehlszeilenoptionen können sich zwischen verschiedenen Versionen von ncund geringfügig ändern tar, funktionieren jedoch auf jeden Fall mit den neuesten Linux-Distributionen.


2

Um unter Linux einen Ordner und seinen Inhalt aus dem Benutzerverzeichnis (in diesem Beispiel root) in einen Ordner im lokalen Benutzerverzeichnis zu kopieren, führe ich diesen Befehl auf dem lokalen Computer aus:

scp -r root@178.62.54.83: ~ / folderinremoteuserdir ~ / folderinlocaluserdir

Beachte das ~ / was ich oft zu vergessen scheine ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.