Necesito descargar un archivo grande (1 GB). También tengo acceso a varias computadoras que ejecutan Linux, pero cada una está limitada a una velocidad de descarga de 50 kB/s por una política de administración.
¿Cómo distribuyo la descarga de este archivo en varias computadoras y las combino después de que se hayan descargado todos los segmentos, para poder recibirlo más rápido?
Respuesta aceptada:
Los protocolos comunes HTTP, FTP y SFTP admiten solicitudes de rango , para que pueda
solicitar parte de un archivo. Tenga en cuenta que esto también requiere soporte del servidor, por lo que
podría o no funcionar en la práctica.
Puedes usar curl
y el -r
o --range
opción para especificar el rango y
eventualmente solo cat
unir los archivos. Ejemplo:
curl -r 0-104857600 -o distro1.iso 'http://files.cdn/distro.iso'
curl -r 104857601-209715200 -o distro2.iso 'http://files.cdn/distro.iso'
[…]
Y finalmente, cuando reuniste las partes individuales, las concatenas:
cat distro* > distro.iso
Puede obtener más información sobre el archivo, incluido su tamaño con --head
opción:
curl --head 'http://files.cdn/distro.iso'
Puede recuperar el último fragmento con un rango abierto:
curl -r 604887601- -o distro9.iso 'http://files.cdn/distro.iso'
Lea la página de manual de curl para obtener más opciones y explicaciones.
Puede aprovechar aún más ssh y tmux para facilitar la ejecución y el seguimiento
de las descargas en varios servidores.