Gibt es ein vorhandenes Tool, mit dem große Dateien über eine schlechte Verbindung heruntergeladen werden können?
Ich muss regelmäßig eine relativ kleine Datei herunterladen: 300 MB, aber die langsame (80-120 KByte / s) TCP-Verbindung wird nach 10-120 Sekunden zufällig unterbrochen. (Es handelt sich um ein Netzwerk eines großen Unternehmens. Wir haben mehrere Male mit den (aus Indien stammenden) Administratoren Kontakt aufgenommen, aber sie können oder wollen nichts tun.) Möglicherweise liegt das Problem bei ihren Reverse-Proxies / Load-Balancern.
Bisher habe ich eine modifizierte Version von pcurl verwendet: https://github.com/brunoborges/pcurl
Ich habe diese Zeile geändert:
curl -s --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
dazu:
curl -s --retry 9999 --retry-delay 3 --speed-limit 2048 --speed-time 10 \
--retry-max-time 0 -C - --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
Ich musste hinzufügen, --speed-limit 2048 --speed-time 10
weil die Verbindung meist nur für Minuten hängt, wenn es fehlschlägt.
Aber in letzter Zeit kann auch dieses Skript nicht abgeschlossen werden.
Ein Problem ist, dass es das -C -
Teil zu ignorieren scheint , so dass es das Segment nach einem erneuten Versuch nicht "fortsetzt". Es scheint die zugehörige temporäre Datei abzuschneiden und nach jedem Fehler von vorne zu beginnen. (Ich denke , das --range
und die -C
Optionen können nicht zusammen verwendet werden.)
Das andere Problem ist, dass dieses Skript alle Segmente gleichzeitig herunterlädt. Es kann nicht über 300 Segmente verfügen, von denen jeweils nur 10 heruntergeladen werden.
Ich dachte daran, ein Download-Tool in C # für diesen speziellen Zweck zu schreiben, aber wenn es ein vorhandenes Tool gibt oder der Befehl curl mit verschiedenen Parametern ordnungsgemäß funktionieren könnte, könnte ich etwas Zeit sparen.
UPDATE 1: Zusätzliche Informationen: Die Funktion zum parallelen Herunterladen sollte nicht entfernt werden, da für jede Verbindung eine Bandbreitenbeschränkung (80-120 KB / s, meistens 80) gilt, sodass 10 Verbindungen eine 10-fache Geschwindigkeit verursachen können. Ich muss den Dateidownload in 1 Stunde abschließen, da die Datei stündlich generiert wird.
rsync
(wodurch Sie Übertragungen neu starten können)?lftp
Ermöglicht auch den automatischen Neustart von Übertragungen.