Frage Wie bekomme ich ein komplettes Verzeichnis in sftp?


Ich lerne gerade, sftp zu verwenden, und ich möchte ein Verzeichnis von dem Remote-Computer zu meinem lokalen Computer kopieren. Wenn ich es versuche

get [directory]

es gibt mir diesen Fehler:

Cannot download non-regular file: /home/mpirocch/Documents

Get-R funktioniert auch nicht.


160
2017-09-12 21:39


Ursprung


Recursive put / get wurde zu OpenSSH in 5.4 hinzugefügt, das 2010 veröffentlicht wurde. Sie könnten erwägen, Ihre Server zu aktualisieren, da es außerdem viele Fehlerkorrekturen und bessere Sicherheitsfunktionen hinzufügt. - Lèse majesté


Antworten:


Benutze die -r (rekursive) Flagge:

get -r *

231
2017-11-29 21:38



Danke, dass Sie eine Antwort gegeben haben, die die Frage tatsächlich beantwortet. - jonnyflash
Gibt mir: get: Invalid flag -r - ghbarratt
Dies gibt mir auch eine ungültige Flagge. Ich bin mir nicht sicher, ob dies auf allen Systemen unterstützt wird. - Ben
@Ben: Als ich diese Frage 2009 gestellt habe, hat die -r Flagge existierte nicht. Ist Ihr System auf dem neuesten Stand? - Matthew
@silvinci nicht alle aktuelle Systeme. Illegale Option mit CentOS 6.4 openssh-clients-5.3p1-84.1.el6.x86_64 - CrackerJack9


Benutzen:

scp -r mpirocch@my-server:/home/mpirocch/Documents Documents

51
2017-09-12 21:51



Das funktioniert, aber es wäre schön, das von SFTP aus tun zu können (damit ich sehen kann, was ich kopiere, bevor ich es kopiere). Ist das möglich? - Matthew
@ Matthew: Ich denke nicht. Ich stelle mir seit einiger Zeit dieselbe Frage und die beste Antwort, die ich im Moment habe, ist scp -r. Oder Sie können einen erweiterten SFTP-Client wie Filezilla verwenden. - Cristian Ciupitu
scp -r folgt Symlinks ... - jsleuth
Einige Systeme erlauben möglicherweise sftp, aber nicht scp Zugriff. - Turion


Benutzen lftp:

lftp sftp://user@host

Dann benutze die mirror Befehl zum rekursiven Hochladen, wie folgt:

mirror -R

Oder einfach nur hochladen:

mirror

Sie müssen cd in die Verzeichnisse, die Sie spiegeln möchten. Funktioniert magisch!


36
2018-04-08 13:54



+1 lftp ist wie ein kleines Bündel Magie und Freude! - WCWedin


Verwenden Sie das sftp-Programm nicht direkt, wenn Sie etwas besseres finden können. Unter Linux unterstützen viele Dateimanager (zumindest Nautilus und Dolphin, die GNOME- und KDE-Dateien) sftp nativ und es gibt immer sshfs. Für Windows gibt es WinSCP und wahrscheinlich Andere. Der Sinn all dieser Dinge ist, dass Sie über sftp auf Dateien zugreifen können, als wären sie in einem normalen Dateisystem, so dass Sie nicht darauf achten müssen, dass Sie über sftp darauf zugreifen.


15
2017-09-13 03:11



Wow, Nautilus funktioniert sehr gut mit SFTP. Ich habe ein Lesezeichen in Nautilus hinzugefügt, und jetzt ist alles lächerlich einfach. Vielen Dank! - Matthew
Ich hatte Leistungsprobleme mit Nautilus SFTP. Ja, es ist wirklich praktisch, aber ich konnte 1 Gbit / s Netzwerk über Nautilus nicht sättigen, während es einfach war sftp/ssh Befehlszeilenschnittstelle war ich (cca 100 MB / s Dateiübertragungen). Das Problem war Nautilus auf GNU / Linux Mint. - stamster


Nun, diese kleine Anleitung sollte helfen, einen Remote-Server zu lokalen Ordner mit lftp zu spiegeln

lftp sftp://user:password@server.org:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'

  • sftp:// = verwendet SFTP-Protokoll
  • mirror = Spiegelmodus
  • verbose = zeigt die heruntergeladenen Dateien an
  • use-pget-n = Anzahl der Segmente, sehr nützlich, um große Dateien zu beschleunigen
  • parallel = lädt Multipliziererdateien gleichzeitig herunter

Wenn Sie Dateien parallel herunterladen möchten, schalten Sie sie aus use-pget-n=8 mit --parallel=8 

Ich hoffe, dies hilft jedem, der einen Remote-Ordner in einen lokalen Ordner spiegeln muss


13
2018-03-10 01:18



Danke, das hat bei mir funktioniert, nachdem die anderen Methoden fehlgeschlagen sind (insbesondere keine "-r" -Option auf sftp). Der erste Teil des Befehls in meinem Fall musste aufgrund von Dollarzeichen im Passwort in Anführungszeichen gesetzt werden lftp 'sftp://user:pa$$word@server.org:22' -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path' - Jason


Versuchen mget Anstatt von get.

Klärung: mget  werden funktionieren, wenn Sie sich in dem Verzeichnis befinden, das Sie kopieren möchten; Wenn Sie so etwas tun:

sftp> cd dir_to_get
sftp> mget *

Es wird alle Dateien in diesem Verzeichnis erhalten. Der Inhalt aller Unterverzeichnisse wird jedoch nicht rekursiv abgerufen.


12
2017-09-12 22:34



Mget funktioniert nicht besser als für mich. - Matthew
Getting Kann keine nicht reguläre Datei mit diesem herunterladen - Dchris
Dies funktionierte für mich auf einem System, bei dem "get -r" nicht funktionierte. - Tchotchke


get -r [directory]

bekommt [directory] und alles darunter, wo r steht für rekursiv. Ich habe das nur durch Tippen gefunden help von sftp.


9
2018-03-06 16:56



IMO, das ist die beste Antwort auf diese Frage. :) - ramrunner
Dies ist ein Duplikat von Antworten von 29. November 10 (vor fast anderthalb Jahren). - Cristian Ciupitu


Wie mit cp:

scp -rp user@host:/path/to/dir dir

Das oben genannte speichert Zeiten und Modi der ursprünglichen Dateien und Unterverzeichnisse. Dies ist besonders nützlich für das Abrufen von Backups.


4
2018-01-11 09:50



Dies ist im Grunde ein Duplikat von einem Antworten von 29. November 10 (vor fast zwei Jahren). - Cristian Ciupitu


Ich habe Java-Dist-Ordner in Remote-Server, wo ich folgenden Baum habe:

- dist
--- Audio.jar
--- README
--- lib
----- lib.jar

Ziel ist: Ich möchte SFTP verwenden? Und lege sie in / tmp / <>

Schritt 1. sftp remoteuser @ ip

Schritt 2. cd / var / tmp

Schritt 2. lmkdir / tmp / dist; lmkdir / tmp / dist / lib

Schritt 3. lcd / tmp / dist

Schritt 4. mget *

Schritt 5. lcd / tmp / dist / lib

Schritt 6. mget *

Schritt 7. Endlich habe ich mein Ziel

$ ls
Audio.jar  lib  README.TXT

0
2017-09-28 08:39