Esiste uno strumento esistente che può essere utilizzato per scaricare file di grandi dimensioni tramite una connessione errata?
Devo scaricare regolarmente un file relativamente piccolo: 300 MB, ma la connessione TCP lenta (80-120 KByte / sec) si interrompe in modo casuale dopo 10-120 secondi. (È una rete di una grande azienda. Abbiamo contattato i loro amministratori (che lavorano dall'India) più volte, ma non possono o non vogliono fare nulla.) Il problema potrebbe essere con i loro proxy inversi / bilanciamento del carico.
Fino ad ora ho usato una versione modificata di pcurl: https://github.com/brunoborges/pcurl
Ho cambiato questa linea:
curl -s --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
a questa:
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} &
Ho dovuto aggiungere --speed-limit 2048 --speed-time 10
perché la connessione si blocca principalmente per pochi minuti quando non riesce.
Ma recentemente anche questo script non può essere completato.
Un problema è che sembra ignorare la -C -
parte, quindi non "continua" il segmento dopo un nuovo tentativo. Sembra troncare il relativo file temporaneo e iniziare dall'inizio dopo ogni errore. (Credo che il --range
e le -C
opzioni non possono essere usati insieme.)
L'altro problema è che questo script scarica tutti i segmenti contemporaneamente. Non può avere 300 segmenti, di cui solo 10 vengono scaricati alla volta.
Stavo pensando di scrivere uno strumento di download in C # per questo scopo specifico, ma se esiste uno strumento esistente o se il comando curl potrebbe funzionare correttamente con parametri diversi, allora potrei risparmiare un po 'di tempo.
AGGIORNAMENTO 1: Informazioni aggiuntive: la funzionalità di download parallelo non deve essere rimossa, poiché hanno un limite di larghezza di banda (80-120 Kbyte / sec, principalmente 80) per connessione, quindi 10 connessioni possono causare una velocità 10 volte. Devo terminare il download del file in 1 ora, perché il file viene generato ogni ora.
rsync
(che ti permetterà di riavviare i trasferimenti)?lftp
consente anche di riavviare automaticamente le trasmissioni.