Comment distribuer un téléchargement volumineux sur plusieurs ordinateurs?

38

Je dois télécharger un fichier volumineux (1 Go). J'ai également accès à plusieurs ordinateurs exécutant Linux, mais chacun est limité à une vitesse de téléchargement de 50 Ko / s par une stratégie d'administration.

Comment distribuer le téléchargement de ce fichier sur plusieurs ordinateurs et le fusionner une fois tous les segments téléchargés, afin de le recevoir plus rapidement?

Meysam
la source
7
Téléchargez-le à la maison et installez-le via USB clé USB?
WernerCD
2
Je me souviens de ce genre de choses avec la vieille station de soleil b & w lorsque j'étais à l'université. Il suffit de vérifier que vous disposez de suffisamment d'espace pour enregistrer tout le contenu. L'un de mes amis a été expulsé après avoir bloqué tous les ordinateurs du laboratoire (full tmp).
Kartoch
S'il n'y a pas de restriction de téléchargement, à quelle vitesse l'autre extrémité peut-elle envoyer le fichier? Existe-t-il des restrictions de transfert entre les ordinateurs du réseau local?
Dim
@SunWKim Non, il n'y a pas de restriction spécifique.
Meysam

Réponses:

60

Les protocoles communs HTTP, FTP et SFTP prennent en charge les demandes de plage afin que vous puissiez demander une partie d'un fichier. Notez que cela nécessite également une prise en charge du serveur, de sorte que cela peut ou non fonctionner dans la pratique.

Vous pouvez utiliser curlet la -rou --rangeoption pour spécifier la plage et finalement juste catting les fichiers ensemble. Exemple:

curl -r 0-104857600         -o distro1.iso 'http://files.cdn/distro.iso'
curl -r 104857601-209715200 -o distro2.iso 'http://files.cdn/distro.iso'
[…]

Et finalement, lorsque vous avez rassemblé les parties individuelles, vous les enchaînez:

cat distro* > distro.iso

Vous pouvez obtenir plus d'informations sur le fichier, y compris sa taille, avec l' --headoption:

curl --head 'http://files.cdn/distro.iso'

Vous pouvez récupérer le dernier morceau avec une plage ouverte:

curl -r 604887601- -o distro9.iso 'http://files.cdn/distro.iso'

Lisez la page de manuel curl pour plus d’options et d’explications.

Vous pouvez davantage utiliser ssh et tmux pour faciliter l'exécution et le suivi des téléchargements sur plusieurs serveurs.

Marco
la source
15
Note: attention, lors de l’utilisation, cat distro* > ...vérifiez le tri des fichiers, car l’ *expans développé par votre shell pourrait le trier comme ceci: distro1.iso distro10.iso distro11.iso ...et donc concaténer dans le mauvais ordre.
Sébastien
8
un correctif pour la note de @ Sebastian serait:cat distro{1..10}.iso
nonchip
1
Cette solution est spécifique à la coque et non portable. cat $(seq -fdist%g.iso 1 10)devrait être plus prévisible, mais il échoue csh, cependant. Le remplacement $(…)par des points arrière semble fonctionner dans la plupart des coques.
Marco le
3
@Marco, seqn'est pas non plus une commande portable. Vous pouvez utiliser distro001.iso, distro002.iso...distroy010.iso
Stéphane Chazelas
C’est la politique de l’administrateur, 50 ko / s par connexion de transfert ou la bande passante totale autorisée sur l’ordinateur. Si c'est le cas, la réponse peut être utilisée sur le même ordinateur plutôt que de devoir se connecter à différents postes de travail.
Dim
0

Il faudrait environ 5,5 heures pour charger un fichier de 1 gigaoctet à 50 kilo-octets par seconde.

Il semble que les efforts visant à coordonner plusieurs ordinateurs pour obtenir des partiels permettent de gagner du temps.

Vous pouvez consulter bittorrent et utiliser le semis Web ainsi que les transferts via l'échange entre pairs. Chaque client peut recevoir des pièces et partager des pièces terminées avec le réseau local (LAN). Vous vous retrouvez avec le même fichier de 1 Go sur chaque ordinateur, mais la fusion des morceaux est automatisée.

Soleil
la source