J'ai besoin de 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 politique d'administration.
Comment répartir le téléchargement de ce fichier sur plusieurs ordinateurs et les fusionner une fois tous les segments téléchargés, afin de pouvoir le recevoir plus rapidement ?
Réponse acceptée :
Les protocoles communs HTTP, FTP et SFTP prennent en charge les requêtes de plage , vous pouvez donc
demander une partie d'un fichier. Notez que cela nécessite également la prise en charge du serveur, donc cela
peut ou non fonctionner dans la pratique.
Vous pouvez utiliser curl
et le -r
ou --range
option pour spécifier la plage et
éventuellement juste cat
assembler les fichiers. 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 concaténez :
cat distro* > distro.iso
Vous pouvez obtenir plus d'informations sur le fichier, y compris sa taille avec le --head
choix :
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 de curl pour plus d'options et d'explications.
Vous pouvez également utiliser ssh et tmux pour faciliter l'exécution et le suivi
des téléchargements sur plusieurs serveurs.