Wie kann ich mit scp eine Datei von einem Server ziehen?

31

Ich bin auf Maschine A und möchte eine Datei von Maschine B abrufen.

A$ scp <myuserid>@hostB:<path of file in B> .

es steht dass:

scp: <path of file in B>: No such file or directory

Auf Computer B ist diese Datei jedoch in diesem Pfad vorhanden.

Was läuft falsch?

xyz
quelle
Ist dies das genaue Format des Befehls, den Sie ausgeführt haben? Oder gab es einen Dateinamen nach dem ':'?
dtyler

Antworten:

43

Sie haben keine Datei angegeben: Sie müssen die Datei (mit Pfad) nach dem Doppelpunkt einfügen:

A$ scp <myuserid>@hostB:/absolutepath/file .

oder

A$ scp <myuserid>@hostB:relativepath/file .

für einen Pfad relativ zu Ihrem Home-Verzeichnis.

Wenn Sie keinen anderen Benutzer angeben (dh der Benutzer in A und B ist derselbe), benötigen Sie den nicht @

A$ scp hostB:/path/file .
Matteo
quelle
2
Ich habe die Formatierung in der Frage korrigiert, aber vielleicht ist Ihre Antwort noch gültig. Das Problem könnte von einer Verwechslung zwischen absoluten und relativen (zu Hause) Pfaden herrühren.
Stéphane Gimenez
@ StéphaneGimenez jetzt, da ich die bearbeitete Antwort sehe, verstehe ich. Es schien eine seltsame Frage :-)
Matteo
4
$ scp username@remoteip:remote_location_file /location/where/you/save

Dies funktioniert nur, wenn Sie eine Datei kopieren. Wenn Sie ein Verzeichnis kopieren möchten, verwenden Sie

$ scp -r username@remoteip:remote_location_directory /location/where/you/save

Wahl, die Sie auf Ihre Nachfrage verwenden können

-P Port
Gibt den Port an, zu dem eine Verbindung auf dem Remote-Host hergestellt werden soll. Beachten Sie, dass diese Option mit einem Großbuchstaben "P" geschrieben ist, da -p bereits für die Beibehaltung der Zeiten und Modi der Datei in rcp reserviert ist.

-p
Behält die Änderungszeiten, Zugriffszeiten und Modi der Originaldatei bei.

-r
Kopiert rekursiv ganze Verzeichnisse.

-v

Ausführlicher Modus. Bewirkt, dass scp und ssh Debugging-Meldungen über ihren Fortschritt ausgeben. Dies ist hilfreich beim Debuggen von Verbindungs-, Authentifizierungs- und Konfigurationsproblemen.

Rakib
quelle
1
Das OP bat um das Kopieren einer Datei, nicht eines Verzeichnisses.
Gegenmodus
2

Verwenden Sie den richtigen SCP-Pfad

scp ssh://user@hostname/tmp/foo.txt .

quelle
1

Sie können entweder einen Dateipfad angeben, der relativ zu Ihrem Basisverzeichnis ist, oder einen absoluten Dateipfad. Wenn Sie sich beispielsweise foo.txtin einem Verzeichnis befinden, das docsunter Ihrem Basisverzeichnis aufgerufen bar.txtwird /var/tmp, und sich in befindet , können Sie dies tun

scp [email protected]:docs/foo.txt .
scp [email protected]:/var/tmp/bar.txt .

Beachten Sie, dass Sie, wenn der Dateiname Zeichen enthält, die für die Remote-Shell spezifisch sind (normalerweise Leerzeichen oder !"#$&'*;<>?[\]^`{|}~), diese für die Remote-Shell maskieren müssen und für die lokale Shell maskieren müssen. Wenn die Datei beispielsweise aufgerufen wird foo bar.txtund sich in Ihrem Ausgangsverzeichnis befindet:

scp [email protected]:'foo\ bar.txt' .

Wenn Sie Probleme mit Dateien haben, die Interpunktionszeichen enthalten, versuchen Sie, diese mit zu übertragen , sftpanstatt scpsie zu verwenden. Oder verwenden Sie eine noch bequemere Methode, wenn Sie FUSE verwenden können : Hängen Sie das Dateisystem des Remote-Computers mit sshfs ein und verwenden Sie dann normale Dateibearbeitungsbefehle.

mkdir host.example.com
sshfs [email protected]:/ host.example.com
cp host.example.com/path/to/file .
Gilles 'SO - hör auf böse zu sein'
quelle
1

Man kann einfach in beide Richtungen SCP, wenn man den DMZ-Benutzer und das Passwort hat. Sie befinden sich auf Ihrem lokalen Rechner: Von der DMZ zu Ihrem lokalen Linux-Rechner (Pull). Bedeutet, dass Sie abc.text in folder2 auf Ihre aktuell angemeldete PWD kopieren.

scp user@111111:folder1/folder2/abc.txt .

Es wird nach dem Passwort gefragt

das ist alles

Jetzt möchten Sie einen Ordner senden, der Unterordner und Dateien von Ihrem lokalen Computer an DMZ sendet:

usr @ localmachine: ~ / abc / defs> scp -r ordner / usr @ 111111: vkrishna / docker /

Es wird erneut nach dem Passwort gefragt

: ist der Stammordner des entfernten Rechners und vkrishna ist ein Ordner dort & wieder Docker-Unterordner. Lokal defs Ordner hat einen Ordner mit dem Namen "Ordner", den wir vollständig übertragen möchten.

Wie / abc / defs / folder

Vimal Krishna
quelle