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.


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:pass@server.com/

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.

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://user@server.com. 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.

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

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.


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.


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/


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.


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.


3

wget -r ftp://url

Funktioniert perfekt für Redhat und Ubuntu


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:


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  *

8
Down0-Voted: mget ist nicht rekursiv.
Lance Cleveland
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.