So laden Sie rekursiv einen Ordner über FTP unter Linux herunter [geschlossen]

325

Ich versuche, einen Ordner mit dem Befehlszeilen-FTP-Client zu ftpen, aber bisher konnte ich nur 'get' verwenden, um einzelne Dateien abzurufen.

Charles Ma
quelle
5
Die richtige Antwort ist vom 6. April 11 um 14:13 von lkuty. Nicht verwenden mget, es ist überhaupt nicht rekursiv. Antwort vom 22. September 08 um 9:01 Thibaut Barrère ist leichter zu verstehen, muss aber die Option hinzufügen, -l 0wie in den Kommentaren erwähnt
chriscatfr

Antworten:

634

Sie können sich auf wget verlassen, das normalerweise mit FTP richtig umgeht (zumindest nach meiner eigenen Erfahrung). Zum Beispiel:

wget -r ftp://user:[email protected]/

Sie können auch -mdie für die Spiegelung geeignete verwenden. Es ist derzeit gleichbedeutend mit -r -N -l inf.

Wenn die Anmeldeinformationen einige Sonderzeichen enthalten, können Sie die Argumente --userund angeben --password, damit sie funktionieren. Beispiel mit benutzerdefiniertem Login mit bestimmten Zeichen:

wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/

BEARBEITEN Wie von @asmaier hervorgehoben, beachten Sie, dass selbst wenn -res sich um eine Rekursion handelt, die maximale Standardstufe 5 beträgt:

       -r
       --recursive
           Turn on recursive retrieving.

       -l depth
       --level=depth
           Specify recursion maximum depth level depth.  The default maximum depth is 5.

Wenn Sie keine Unterverzeichnisse verpassen möchten, verwenden Sie besser die Spiegelungsoption -m:

       -m
       --mirror
           Turn on options suitable for mirroring.  This option turns on recursion and time-stamping, sets infinite
           recursion depth and keeps FTP directory listings.  It is currently equivalent to -r -N -l inf
           --no-remove-listing.
Thibaut Barrère
quelle
121
Besser verwenden wget -m( --mirror). wget -rist standardmäßig auf eine Rekursionstiefe von 5 begrenzt.
Asmaier
13
Ich musste --userund --passwordauch auf Red Hat verwenden. Mein Wget ist: GNU Wget 1.11.4 Red Hat modifiedIch frage mich, ob es eine Version oder eine Distribution ist ...
Devin
61
Sie können die unendliche Rekursionsstufe mit einstellen -l 0, sodass keine Verwendung --mirrorerforderlich ist, die unerwünschte Nebenwirkungen wie das Auflisten von Dateien haben kann
Hnatt
28
Ich benutze wget --ask-password -rl 99 ftp://[email protected]. Auf diese Weise ist das Passwort bei nicht sichtbar psund bleibt nicht im Verlauf. Natürlich wird es von Natur aus unverschlüsselt an den Server gesendet.
Walter Tross
7
Erinnerung für Bash-Neulinge: Sie müssen einfache Anführungszeichen verwenden, wenn Ihr Benutzername oder Passwort Steuerzeichen (wie $) enthält, z. B.--user='user' --password='pa$$word'
tobek
164

Nur um die Antwort von Thibaut Barrère zu ergänzen.

ich benutzte

wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory

Beachten Sie den doppelten Schrägstrich nach dem Servernamen. Wenn ich keinen zusätzlichen Schrägstrich setze, ist der Pfad relativ zum Home-Verzeichnis des Benutzers.

  • -nH vermeidet die Erstellung eines Verzeichnisses, das nach dem Servernamen benannt ist
  • -nc vermeidet das Erstellen einer neuen Datei, wenn diese bereits auf dem Ziel vorhanden ist (sie wird nur übersprungen).
  • --cut-dirs = 5 ermöglicht es mir, den Inhalt von / absolute / path / to / directory in das Verzeichnis zu verschieben, in dem ich wget starte. Die Nummer 5 wird verwendet, um die 5 Komponenten des Pfades herauszufiltern. Der doppelte Schrägstrich bedeutet eine zusätzliche Komponente.
Ludovic Kuty
quelle
3
Brillant. Die Möglichkeit, bereits vorhandene Dateien zu überspringen, ist ideal, um die neuesten Ergänzungen bei einer Servermigration nachzuholen. rsync ist effizienter und flexibler, aber manchmal ist diese Option einfach nicht verfügbar und nur FTP kann verwendet werden.
Jason
Schöne Parameter hier, besonders -nc und --cut-dirs. Danke für das Teilen!
Lance Cleveland
2
Ich vertraue nicht immer darauf, "vorhandene Dateien zu überspringen", da eine von beiden möglicherweise unvollständig ist oder sich in Größe und Inhalt unterscheidet, aber gut, dass er die Option erwähnt hat
Daniel W.
Auch heute noch verwende ich diesen Befehl wget, wenn ich rsync nicht verwenden kann. Das -nc und --cut-dirs ist so nützlich!
Half Crazed
4
Genial! Und wenn Sie Ihr Passwort nicht in die Befehlszeile eingeben möchten, können Sie --ftp-user=USERund verwenden --ask-password.
Shoover
25
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
Vinko Vrsalovic
quelle
Ich konnte mich nicht mit den Parametern bei einem FTP-Server anmelden, sondern mit der Struktur open ftp://USERNAME:PASSWORD@HOSTnach dem Start von ncftp…
feeela
+1 - Ich weiß, dass dieser Beitrag alt ist, aber ich bin gerade darauf gestoßen und ncftp war wirklich einfach zu bedienen. Ich habe -R für rekursives Erhalten mit ncftpget
Zack Macomber
definitiv zuverlässiger als wgetund auch schneller im TAR-Modus. Vielen Dank!
Lencinhaus
3
Dies funktioniert nicht wie unter Ubuntu 14.04 angegeben. Die Syntax, die für mich funktionierte, war "get -R-Verzeichnis" anstelle von mget.
Ivan
Arbeitete für mich unter Ubuntu 14.04. Ich musste nicht vergessen, dass alles nur da war.
Ashley
22

Wenn lftpauf Ihrem Computer installiert ist, verwenden Sie mirror dir. Und du bist fertig. Lesen Sie den Kommentar von Ciro unten, wenn Sie ein Verzeichnis rekursiv herunterladen möchten.

Dilawar
quelle
7
Übrigens, mirror -R dirrekursives Verzeichnis hochladen / aktualisieren
Ciro Santilli 法轮功 冠状 病 病 六四 事件 13.
1
kann auch mirror ./zum rekursiven Herunterladen aller Dateien und Ordner im aktuellen Pfad verwendet werden.
Nabi KAZ
Sie können auch einfach das mirroraktuelle Verzeichnis und seine Unterordner eingeben.
Michael
17

Wenn Sie scpanstelle von verwenden können ftp, -rerledigt die Option dies für Sie. Ich würde prüfen, ob Sie einen moderneren Dateiübertragungsmechanismus als FTP verwenden können.

Greg Hewgill
quelle
2
Ich habe dafür gestimmt, weil es genau mein erster Gedanke war, obwohl er die Frage nicht so wie sie ist beantwortet.
Metao
Welches schlagen Sie @ greg-hewgill vor? Ich habe ein ähnliches Problem
Michal Gonda
1
scpwird weiterhin versuchen, ssh zu verwenden, was nicht funktioniert, wenn Sie nur FTP-Anmeldeinformationen haben. Es fühlt sich komisch an, auf einen Kommentar aus dem Jahr 2008 zu antworten, der besagt, dass die Technologie, an der ich
festhalte,
7

Es gibt 'ncftp', das für die Installation unter Linux verfügbar ist. Dies funktioniert mit dem FTP-Protokoll und kann zum rekursiven Herunterladen von Dateien und Ordnern verwendet werden. funktioniert unter Linux. Wurde verwendet und funktioniert gut für die rekursive Ordner- / Dateiübertragung.

Überprüfen Sie diesen Link ... http://www.ncftp.com/

Chiffre
quelle
2
ncftp arbeiten auch an Windows
Ilya
Ich liebe ncftp! Vielen Dank.
Jocull
3

Wenn Sie können, empfehle ich Ihnen tarund bzip(oder gzip, was auch immer Ihr Boot schwimmt) dem Verzeichnis auf dem Remote-Computer dringend - für ein Verzeichnis von erheblicher Größe ist die Bandbreitenersparnis wahrscheinlich die Zeit zum Zip / Entpacken wert.

Hank Gay
quelle
Vielleicht im Jahr 2008, aber im Jahr 2013 spielt die Bandbreite keine Rolle mehr und Sie haben möglicherweise FTP, aber keinen Konsolenzugriff :-)
Daniel W.
3

Wenn Sie sich an Befehlszeilen-FTP halten möchten, sollten Sie NcFTP ausprobieren. Dann können Sie get -R verwenden, um rekursiv einen Ordner abzurufen. Sie erhalten auch die Fertigstellung.

Jazz
quelle
3

wget -r ftp://url

Funktioniert perfekt für Redhat und Ubuntu

Phillip
quelle
1

Sie sollten nicht verwenden ftp. Als ob telnetes keine sicheren Protokolle verwendet und Passwörter im Klartext übertragen werden. Dies macht es für Dritte sehr einfach, Ihren Benutzernamen und Ihr Passwort zu erfassen.

Um Remoteverzeichnisse remote zu kopieren, sind folgende Optionen besser:

  • rsyncist das am besten geeignete Tool, wenn Sie sich über anmelden können ssh, da es nur die Unterschiede kopiert und in der Mitte leicht neu gestartet werden kann, falls die Verbindung unterbrochen wird.

  • ssh -r ist die zweitbeste Option zum rekursiven Kopieren von Verzeichnisstrukturen.

Sehen:

Tilo
quelle
nicht sicher, nur ftp
JosFabre
Es ist 2015. FTP sollte nicht verwendet werden.
Tilo
1
Genau. Und Vorschläge für mehr Sicherheit sollten immer gegeben werden. Aber die Frage war über FTP, also zu sagen, man sollte es nicht verwenden, hilft nicht
JosFabre
Ich bin respektvoll anderer Meinung. Sie verwenden das falsche Werkzeug für den Job. Sie sollten lernen, sichere und aktuelle Tools zu verwenden, anstatt das FTP der 1980er Jahre. Insbesondere sollte niemand mehr einen FTP-Server betreiben: P
Tilo
4
Entschuldigung, aber erst letzte Woche habe ich auf einen Server zugegriffen, der nur über FTP-Konnektivität verfügt. Meine Aufgabe bestand darin , die Migration weg von ihm.
Antti Haapala
-6

Schalten Sie die Eingabeaufforderung mit dem Befehl PROMPT um.

Verwendungszweck:

ftp>cd /to/directory    
ftp>prompt    
ftp>mget  *
Rohit
quelle
8
Down0-Voted: mget ist nicht rekursiv.
Lance Cleveland