Ich versuche, Daten im Wert von einem Jahr mit wget (oder ncftpget) von einem NOAA-FTP-Server herunterzuladen. Aufgrund des Overheads von FTP dauert es jedoch viel länger als erwartet (glaube ich). Zum Beispiel dieser Befehl
time wget -nv -m ftp://ftp:[email protected]/pub/data/noaa/2015 -O /weather/noaa/2015
Oder ähnlich über ncftpget
ncftpget -R -T -v ftp.ncdc.noaa.gov /weather/noaa/ /pub/data/noaa/2015
Ergibt ein Ergebnis von. 53 Minuten, um 30M zu übertragen!
FINISHED --2015-01-03 16:21:41--
Total wall clock time: 53m 32s
Downloaded: 12615 files, 30M in 7m 8s (72.6 KB/s)
real 53m32.447s
user 0m2.858s
sys 0m8.744s
Wenn ich mir diese Übertragung ansehe, wird jede einzelne Datei ziemlich schnell übertragen (500 KBit / s), aber das Herunterladen von 12.000 relativ kleinen Dateien verursacht einen enormen Overhead und verlangsamt den gesamten Prozess.
Meine Fragen:
- Beurteile ich die Situation richtig? Mir ist klar, dass es schwer zu sagen ist, ohne die Server zu kennen, aber saugt FTP wirklich so viel, wenn Tonnen kleiner Dateien übertragen werden?
- Gibt es irgendwelche Verbesserungen an wget oder ncftpget, damit sie besser mit dem Remote-FTP-Server spielen können? Oder vielleicht eine Art Parallelität?
Wenn Sie auf Ihrem Host Schreibzugriff haben (in diesem Fall würde ich davon ausgehen, dass Sie sich anonym anmelden und keinen Schreibzugriff haben), komprimieren / tarieren Sie die Dateien vor dem Download
quelle
Ja du hast Recht. Obwohl die FTP-Spezifikationen einen alternativen Übertragungsmodus bieten, mit dem mehrere Dateien über eine einzige Datenverbindung übertragen werden können, wurde dies bei der letzten Umfrage zu verfügbarer Software (die zugegebenermaßen bereits 1998 durchgeführt wurde) von keiner unterstützt. Ich glaube nicht, dass sich die Situation geändert hat, da das Interesse an FTP eher gering war. Die meisten Organisationen mit solchen Datensätzen bieten Zugriff auf sie über http oder in größeren Archiven, um dieses Problem zu vermeiden. Sie sollten überprüfen, ob NOAA dies tut.
quelle