Verzeichnis mit 1 Mio Dateien per FTP kopieren - Wie?!
Hallo liebe Community,
ich suche nun schon seit einigen Tagen nach einer Lösung für mein Problem, bin jedoch immer wieder gescheitert. Nun wende mich hilfesuchend an all die Linux Profis. Ich hoffe, Ihr könnt mir helfen.
Folgendes Problem:
Ich muss ein Webprojekt von Server A zu Server B umziehen. Server A erlaubt mir einen Zugang ausschließlich per FTP (kein SCP, kein SSH, kein rsync, alles schon angefragt). Dieses Projekt hat ein Datenvolumen von ca. 300 GB. Das Kopieren funktioniert per FTP soweit auch ganz gut, bis auf ein Verzeichnis, was sich strikt weigert, korrekt kopiert zu werden.
Wenn ich das Projekt kopiere, dann kopiert er etwa 150 GB an Daten problemlos und beendet dann den Transfer ohne Fehlermeldung. Mir fehlen dann aber noch ca. 150 GB an Daten. Bei diesen Daten handelt es sich um ca. 1.000.000 Dateien, die durch den Vorgänger allesamt in ein einziges Verzeichnis abgelegt wurden. Von diesen 150GB werden mir per FTP gerade einmal 100.000 Dateien mit ca. 15 GB kopiert. Der Rest wird schlichtweg nicht mit kopiert. Ich habe keine Ahnung warum.
Folgende Kopiermöglichkeiten habe ich bereits probiert:
curlftpfs & rsync: teilweise problembehaftet, obiges Ergebnis
FTP mit mget *: obiges Ergebnis
FTP: bin nochmal per FTP jeden anfangsbuchstaben in dem ordner durchgegangen, also mget a*, mget b*, mget c*, etc. dasselbe ergebnis wie mget *
lftp mit mirror bei 5 parallelverbindungen: sehr schnell, obiges Ergebnis
ncftp mit bgget: sehr langsam, bislang nur obiges Ergebnis
Die Dateien sind auf Server A aber definitiv vorhanden, denn ich kann das Webprojekt live sehen, dort sind alle Dateien abrufbar, während bei meiner Kopie auf Server B tausende Dateien als fehlend angezeigt werden.
Fällt Euch dazu irgendwas ein? Irgendjemand noch eine Idee, was ich noch probieren könnte? Ich habe das ganze Netz durchforstet und bislang keinen ähnlichen Fall gefunden. Vielleicht habe ich aber auch nur die falschen Suchbegriffe eingegeben. Wäre Euch wirklich dankbar, weil ich mit meinem Latein echt am Ende bin.
Vielen Dank!
Micha
ich suche nun schon seit einigen Tagen nach einer Lösung für mein Problem, bin jedoch immer wieder gescheitert. Nun wende mich hilfesuchend an all die Linux Profis. Ich hoffe, Ihr könnt mir helfen.
Folgendes Problem:
Ich muss ein Webprojekt von Server A zu Server B umziehen. Server A erlaubt mir einen Zugang ausschließlich per FTP (kein SCP, kein SSH, kein rsync, alles schon angefragt). Dieses Projekt hat ein Datenvolumen von ca. 300 GB. Das Kopieren funktioniert per FTP soweit auch ganz gut, bis auf ein Verzeichnis, was sich strikt weigert, korrekt kopiert zu werden.
Wenn ich das Projekt kopiere, dann kopiert er etwa 150 GB an Daten problemlos und beendet dann den Transfer ohne Fehlermeldung. Mir fehlen dann aber noch ca. 150 GB an Daten. Bei diesen Daten handelt es sich um ca. 1.000.000 Dateien, die durch den Vorgänger allesamt in ein einziges Verzeichnis abgelegt wurden. Von diesen 150GB werden mir per FTP gerade einmal 100.000 Dateien mit ca. 15 GB kopiert. Der Rest wird schlichtweg nicht mit kopiert. Ich habe keine Ahnung warum.
Folgende Kopiermöglichkeiten habe ich bereits probiert:
curlftpfs & rsync: teilweise problembehaftet, obiges Ergebnis
FTP mit mget *: obiges Ergebnis
FTP: bin nochmal per FTP jeden anfangsbuchstaben in dem ordner durchgegangen, also mget a*, mget b*, mget c*, etc. dasselbe ergebnis wie mget *
lftp mit mirror bei 5 parallelverbindungen: sehr schnell, obiges Ergebnis
ncftp mit bgget: sehr langsam, bislang nur obiges Ergebnis
Die Dateien sind auf Server A aber definitiv vorhanden, denn ich kann das Webprojekt live sehen, dort sind alle Dateien abrufbar, während bei meiner Kopie auf Server B tausende Dateien als fehlend angezeigt werden.
Fällt Euch dazu irgendwas ein? Irgendjemand noch eine Idee, was ich noch probieren könnte? Ich habe das ganze Netz durchforstet und bislang keinen ähnlichen Fall gefunden. Vielleicht habe ich aber auch nur die falschen Suchbegriffe eingegeben. Wäre Euch wirklich dankbar, weil ich mit meinem Latein echt am Ende bin.
Vielen Dank!
Micha
Please also mark the comments that contributed to the solution of the article
Content-ID: 132181
Url: https://administrator.de/forum/verzeichnis-mit-1-mio-dateien-per-ftp-kopieren-wie-132181.html
Printed on: May 13, 2025 at 11:05 o'clock
11 Comments
Latest comment
Olá Micha-80
das Problem kommt mir bekannt vor. Nur das es bei uns 1,8 Millionen Dateien waren dafür aber "nur" 100GB.
Bei meinem Fall hat einfach das DirectoryListing zu lange gedauert. Allein 1,10 Stunden!! hat der Server gebraucht um mir das Listing zu schicken! Was sich nach 2 Sekunden aufgrund von Änderungen (wir haben den FTP Server noch benutzt, wieder neu eingelesen wurde... Narf) Zumindest mit Windows Boardmitteln und den üblichen FTP Clients kam ich nicht ran.
Rsync kann kein FTP sprechen außer über Curlftpfs.
Das würde ich dir auch nochmal ans Herz legen. Mach nebenbei noch ein Terminal auf indem du Curlftpfs im Debugmodus laufen lässt
während du im anderen Terminal mit Rsync über Curlftpfs ziehst.
Ich konnte dann bei mir sehen. Das genau nach 15min die Verbindung von der Gegenseite gekappt wurde auf Grund von "Nichtstun" ich las ja noch das Listing ein...
Wir haben dann mit dem Provider geredet 1u1 und dieser hat uns zwei Dinge vorgeschlagen a) er zippt uns den ganzen Berg und stellt ihn uns als FTP download zur Verfügung (Vorteil: nur eine Datei, kein Listing, Nachteil: riesengroß, dauert unendlich lange zum download) b) er hat uns für einige STunden einen ssh Zugang gegeben. Sodass wir ganz fix mit Rsync ziehen konnten. Ich empfehle dir auch mit dem Betreiber des FTP's zu reden. Ev findet IHr ja eine schnellere Lösung.
Wenn das nicht geht bleibe bei Curlftpfs und debugge die übertragung - so weisst du warum der Download nicht geht und kannst dann dort ansetzen.
das Problem kommt mir bekannt vor. Nur das es bei uns 1,8 Millionen Dateien waren dafür aber "nur" 100GB.
Bei meinem Fall hat einfach das DirectoryListing zu lange gedauert. Allein 1,10 Stunden!! hat der Server gebraucht um mir das Listing zu schicken! Was sich nach 2 Sekunden aufgrund von Änderungen (wir haben den FTP Server noch benutzt, wieder neu eingelesen wurde... Narf) Zumindest mit Windows Boardmitteln und den üblichen FTP Clients kam ich nicht ran.
Rsync kann kein FTP sprechen außer über Curlftpfs.
Das würde ich dir auch nochmal ans Herz legen. Mach nebenbei noch ein Terminal auf indem du Curlftpfs im Debugmodus laufen lässt
curlftpfs ftp://dein-ftp-user:dein-pw@dein-ftp /verzeichnis-wohin-mounten -d -o -v
während du im anderen Terminal mit Rsync über Curlftpfs ziehst.
Ich konnte dann bei mir sehen. Das genau nach 15min die Verbindung von der Gegenseite gekappt wurde auf Grund von "Nichtstun" ich las ja noch das Listing ein...
Wir haben dann mit dem Provider geredet 1u1 und dieser hat uns zwei Dinge vorgeschlagen a) er zippt uns den ganzen Berg und stellt ihn uns als FTP download zur Verfügung (Vorteil: nur eine Datei, kein Listing, Nachteil: riesengroß, dauert unendlich lange zum download) b) er hat uns für einige STunden einen ssh Zugang gegeben. Sodass wir ganz fix mit Rsync ziehen konnten. Ich empfehle dir auch mit dem Betreiber des FTP's zu reden. Ev findet IHr ja eine schnellere Lösung.
Wenn das nicht geht bleibe bei Curlftpfs und debugge die übertragung - so weisst du warum der Download nicht geht und kannst dann dort ansetzen.
Zitat von @photographix:er zippt uns den ganzen Berg und stellt ihn uns als FTP download zur Verfügung (Vorteil: nur eine Datei, kein Listing, Nachteil: riesengroß, dauert unendlich lange zum download)
Die ZIP Datei müßte doch deutlich kleiner als die Summe der einzelnden Dateien sein.Viele Provider bieten die Möglichkeit, auch 1und1, über das WebFrontEnd Verzeichnisse und Dateien zu packen und entpacken.
Dies sollte die einfachste Möglichkeit sein.
Alternative:
Liste mit den Dateinamen erstellen und eine Batchdatei mit get/mget erstellen. Dann kann man "einfach" immer dort weitermachen wo er aufgehört hat ohne das Listing neu einzulesen.
Stefan
Zitat von @StefanKittel:
> Zitat von @photographix:er zippt uns den ganzen Berg und stellt ihn uns als FTP download zur Verfügung (Vorteil: nur
eine Datei, kein Listing, Nachteil: riesengroß, dauert unendlich lange zum download)
Die ZIP Datei müßte doch deutlich kleiner als die Summe der einzelnden Dateien sein.
Kommt ja auf die Dateien an, die dort im Verzeichnis liegen. Wenn die größtenteils schon in einem komprimierten Dateiformat vorliegen (JPG oder so), wird die ZIP-Datei nicht viel kleiner werden. Der Vorteil wäre in dem Fall nur der eingesparte Overhead und Verzeichnisindex.> Zitat von @photographix:er zippt uns den ganzen Berg und stellt ihn uns als FTP download zur Verfügung (Vorteil: nur
eine Datei, kein Listing, Nachteil: riesengroß, dauert unendlich lange zum download)
Die ZIP Datei müßte doch deutlich kleiner als die Summe der einzelnden Dateien sein.
Ich würde mir ein Listing der Verzeichnisse und Dateien besorgen (als Textdatei). Mit dieser Datei dann per Batch wget oder ftp füttern und jede Datei einzeln vom Server holen. Dann noch mitschreiben, welche Datei wann geholt wurde und ob der Vorgang erfolgreich war. Das dauert zwar eine Weile, aber da der Server jede Datei einzeln ausliefert sollte das funktionieren. Mit Hilfe der Logdatei am Ende quer prüfen, ob alle Dateien heruntergeladen wurden und mit Hilfe eines neuen Verzeichnislistings ob sich Dateien während/nach dem Download geändert haben.
Manuel
Manuel
$man wget
-i file
--input-file=file
Read URLs from file. If - is specified as file, URLs are read from
the standard input. (Use ./- to read from a file literally named
-.)
If this function is used, no URLs need be present on the command
line. If there are URLs both on the command line and in an input
file, those on the command lines will be the first ones to be
retrieved. The file need not be an HTML document (but no harm if
it is)---it is enough if the URLs are just listed sequentially.

Manchmal hilft auch der gute alte Midnight Commander...
Lonesome Walker
Lonesome Walker