Devo scaricare un file di grandi dimensioni (1 GB). Ho anche accesso a più computer che eseguono Linux, ma ognuno è limitato a una velocità di download di 50 kB/s da un criterio di amministrazione.
Come faccio a distribuire il download di questo file su più computer e unirli dopo che tutti i segmenti sono stati scaricati, in modo da poterlo ricevere più velocemente?
Risposta accettata:
I protocolli comuni HTTP, FTP e SFTP supportano richieste di intervallo , così puoi
richiedere parte di un file. Tieni presente che ciò richiede anche il supporto del server, quindi
potrebbe funzionare o meno nella pratica.
Puoi usare curl
e il -r
o --range
opzione per specificare l'intervallo e
eventualmente solo cat
combinare i file. Esempio:
curl -r 0-104857600 -o distro1.iso 'http://files.cdn/distro.iso'
curl -r 104857601-209715200 -o distro2.iso 'http://files.cdn/distro.iso'
[…]
E alla fine quando hai raccolto le singole parti le concateni:
cat distro* > distro.iso
Puoi ottenere ulteriori informazioni sul file, inclusa la sua dimensione con il --head
opzione:
curl --head 'http://files.cdn/distro.iso'
Puoi recuperare l'ultimo blocco con un intervallo aperto:
curl -r 604887601- -o distro9.iso 'http://files.cdn/distro.iso'
Leggi la pagina man di curl per ulteriori opzioni e spiegazioni.
Puoi sfruttare ulteriormente ssh e tmux per semplificare l'esecuzione e tenere
traccia dei download su più server.