Download di file multi-thread per Linux | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Download di file multi-thread per Linux

Quando si scarica un file di grandi dimensioni da un singolo server HTTP o FTP utilizzando uno strumento tradizionale come curl o wget, viene aperta una singola connessione TCP e il file viene scaricato in sequenza. Su una rete veloce, questo può essere limitato dal limite di velocità del server per singola connessione, dal TCP Slow Start o dalla latenza di andata e ritorno. Le utilità per il download parallelo aprono contemporaneamente diverse connessioni alla stessa origine, ognuna delle quali recupera un intervallo di byte diverso, e ricompongono localmente il risultato. Questo funziona solo se il server accetta le richieste HTTP Range (rispondendo con HTTP 206 Partial Content); sui server che lo supportano, il risultato è spesso un trasferimento significativamente più veloce rispetto a quello ottenuto con uno strumento che utilizza un singolo flusso.

In questo articolo, il termine «download multithread» indica questo modello di connessioni parallele, anziché l'utilizzo di più thread all'interno del processo di download stesso.

Questo articolo tratta due utilità di questo tipo per Linux: Axel e aria2.

Axel

Axel è uno strumento leggero per il download dalla riga di comando. Apre più connessioni verso un'unica origine e scarica intervalli di byte in parallelo. Supporta HTTP, HTTPS, FTP e FTPS e può riprendere un download interrotto.

Installazione di Axel

Su Debian e Ubuntu:

sudo apt install axel

Su RHEL, CentOS Stream, AlmaLinux e Rocky Linux, abilita prima EPEL:

sudo dnf install epel-release sudo dnf install axel

Su Fedora:

sudo dnf install axel

Utilizzo di Axel

Un download di base:

axel https://nl.lg.introserv.eu/1000MB.test

L'opzione -a abilita un indicatore di avanzamento compatto:

axel -a https://nl.lg.introserv.eu/1000MB.test

Limita la velocità massima di download in byte al secondo con -s (o --max-speed). Ad esempio, per limitare il trasferimento a 500 KB/s:

axel --max-speed=512000 https://nl.lg.introserv.eu/1000MB.test

Salva il file con un nome diverso utilizzando -o:

axel -o gigabyte.test https://nl.lg.introserv.eu/1000MB.test

Imposta il numero di connessioni parallele con -n:

axel -n 10 https://nl.lg.introserv.eu/1000MB.test

Riprendi un file scaricato parzialmente con -c:

axel -c https://nl.lg.introserv.eu/1000MB.test

Con -c, se esiste già un file locale con lo stesso nome, Axel riprende il download dal punto in cui era stato interrotto invece di ricominciare da capo.

aria2

aria2 offre lo stesso tipo di download parallelo di Axel, ma dispone di un insieme più ampio di funzionalità. Supporta HTTP, HTTPS, FTP, SFTP, BitTorrent e Metalink e può scaricare lo stesso file contemporaneamente da più origini. Come Axel, divide un file in segmenti e li scarica in parallelo.

Funzionalità principali:

  • numero configurabile di connessioni per server, dimensione dei segmenti e concorrenza complessiva
  • ripresa automatica dei download interrotti
  • verifica dell'integrità basata su checksum
  • supporto per HTTPS e FTPS
  • client BitTorrent e Metalink nativi

Installazione di aria2

Su Debian e Ubuntu:

sudo apt install aria2

Su RHEL, CentOS Stream, AlmaLinux e Rocky Linux:

sudo dnf install aria2

Su Fedora:

sudo dnf install aria2

Utilizzo di aria2

Un download di base:

aria2c https://nl.lg.introserv.eu/1000MB.test

Scarica lo stesso file contemporaneamente da due mirror. aria2 combina le connessioni a entrambe le origini e ricompone localmente il file:

aria2c "https://nl.lg.introserv.eu/1000MB.test" "https://uk.lg.introserv.eu/1000MB.test"

Combina origini HTTP e FTP fornendo le credenziali FTP:

aria2c --ftp-user=<USER> --ftp-passwd=<PASSWD> "ftp://<ftpserver_ip>/<file>" "https://uk.lg.introserv.eu/1000MB.test"

Apri otto connessioni parallele a un singolo server, suddividendo il file in otto segmenti:

aria2c -x8 -s8 https://nl.lg.introserv.eu/1000MB.test

L'opzione -x (o --max-connection-per-server) limita il numero di connessioni che aria2 apre verso un singolo server (valore predefinito 1). L'opzione -s (o --split) imposta il numero massimo di segmenti in cui viene suddiviso il file (valore predefinito 5). Per una singola origine, il numero effettivo di connessioni parallele è il minore dei due valori: -x8 -s5 apre 5 connessioni, mentre -x5 -s8 ne apre anch'esso 5. Per ottenere effettivamente 8 connessioni parallele verso un singolo server, è necessario aumentare entrambi i valori; per questo motivo vengono generalmente impostati sullo stesso numero.

L'opzione -k (o --min-split-size) imposta la dimensione minima del blocco in cui viene suddiviso il file. Valori più piccoli consentono un numero maggiore di segmenti paralleli, ma comportano un maggiore overhead:

aria2c -x8 -s8 -k1M https://nl.lg.introserv.eu/1000MB.test

Info

-x, -s e -j risolvono problemi diversi. -x controlla il numero di connessioni aperte verso un singolo server durante il download di un file. -s controlla in quanti segmenti viene suddiviso un file. -j (o --max-concurrent-downloads) controlla quanti file separati aria2 scarica contemporaneamente.

Scarica due file in parallelo:

aria2c -j2 https://nl.lg.introserv.eu/1000MB.test https://uk.lg.introserv.eu/1000MB.test

Riprendi un file scaricato parzialmente con -c:

aria2c -c https://nl.lg.introserv.eu/1000MB.test

Quando viene fornito un file Metalink, aria2 può selezionare automaticamente i mirror, verificare i dati scaricati utilizzando i checksum dichiarati nel file Metalink e ritentare i mirror che hanno avuto esito negativo senza intervento manuale.

Per l'uso ripetuto, aria2 legge le opzioni predefinite da ~/.aria2/aria2.conf se il file esiste. In questo modo, valori come max-connection-per-server e split possono essere impostati una sola volta nel file invece di essere specificati a ogni esecuzione.

Warning

L'apertura di molte connessioni parallele verso un mirror pubblico o un CDN può violare le condizioni di utilizzo dell'operatore e attivare limitazioni di velocità o blocchi temporanei. Per le fonti pubbliche, mantieni un numero moderato di connessioni (da 4 a 8 è generalmente sicuro); utilizza valori superiori solo su infrastrutture per le quali è noto che siano consentiti.

Quando i download paralleli sono utili

I download paralleli sono più efficaci quando il collo di bottiglia è il limite di velocità del server per singola connessione o il limite di throughput della fonte, e non il disco locale o il collegamento di rete nel suo complesso. Su un collegamento completamente saturo, l'apertura di più connessioni non aumenta la larghezza di banda totale, ma si limita a redistribuirla. Alcuni server HTTP rifiutano inoltre le richieste Range o limitano il numero di connessioni simultanee provenienti da un singolo client; in questo caso, uno strumento a flusso singolo come wget è altrettanto veloce di Axel o aria2.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA