Come posso distribuire un download di grandi dimensioni su più computer?


38

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 una politica di amministrazione.

Come posso 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?


7
Scaricalo a casa e lo intrufoli via USB tramite chiavetta USB?
WernerCD,

2
Ricordo cose del genere con la vecchia stazione sun & b quando ero all'università. Basta controllare se hai abbastanza spazio per salvare tutti i contenuti, uno dei miei amici è stato espulso dopo aver bloccato tutti i computer del laboratorio (full tmp).
Kartoch,

Se non ci sono restrizioni di download, quanto velocemente l'altra estremità può inviare il file? Esistono restrizioni di trasferimento tra computer sulla LAN?
Sun

@SunWKim No. Non ci sono restrizioni specifiche lì.
Meysam,

Risposte:


60

I protocolli comuni HTTP, FTP e SFTP supportano le richieste di intervallo , quindi è possibile richiedere parte di un file. Si noti che ciò richiede anche il supporto del server, quindi potrebbe funzionare o meno nella pratica.

È possibile utilizzare curle l' opzione -ro --rangeper specificare l'intervallo ed eventualmente semplicemente catunire 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 hai concatenate:

cat distro* > distro.iso

Puoi ottenere ulteriori informazioni sul file, inclusa la sua dimensione con l' --headopzione:

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 arricciatura per ulteriori opzioni e spiegazioni.

Puoi inoltre sfruttare ssh e tmux per facilitare l'esecuzione e tenere traccia dei download su più server.


15
Nota: attenzione, quando si utilizza cat distro* > ...controllare l'ordinamento dei file come *espanso dalla shell potrebbe ordinare in questo modo: distro1.iso distro10.iso distro11.iso ...e quindi concatenando nell'ordine sbagliato.
Sebastian

8
una correzione per la nota di @ Sebastian sarebbe:cat distro{1..10}.iso
nonchip

1
Tale soluzione è specifica per shell e non portatile. cat $(seq -fdist%g.iso 1 10)dovrebbe essere più prevedibile, ma fallisce csh, comunque. La sostituzione $(…)con backtics sembra funzionare nella maggior parte delle shell.
Marco

3
@Marco, seqnon è nemmeno un comando portatile. Puoi usare distro001.iso, distro002.iso...distroy010.iso
Stéphane Chazelas,

Criterio di amministrazione, 50 kB / s per connessione di trasferimento o larghezza di banda totale consentita sul computer. Se è il primo, la risposta può essere utilizzata sullo stesso computer anziché dover accedere a diverse workstation.
Dom

0

Occorrerebbero circa 5,5 ore per caricare un file da 1 gigabyte a 50 kilobyte al secondo.

Sembra che lo sforzo di coordinare più computer per ottenere i parziali possa risparmiare un po 'di tempo.

Puoi guardare bittorrent e utilizzare il seeding web insieme ai trasferimenti tramite scambio di pari. Ogni cliente può ricevere pezzi e condividere pezzi completati con nella rete locale (LAN). Si finisce con lo stesso file da 1 GB su ogni computer ma l'unione dei pezzi è automatizzata per te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.