49 votos

¿Cómo hacer que wget sea más rápido o multihilo?

Acabo de actualizar el hardware de mi ordenador (cpu + placa base + tarjeta gráfica + memoria + disco duro), por lo que instalar un nuevo SO es necesario. He intentado descargar debian-6.0.6-amd64-netinst.iso con wget pero la velocidad es tan lenta que no pude soportar. 4Kb/s ~ 17 Kb/s , lento como una tortuga corriendo, o aún más lento si uso Chrome.

He leído la información de ayuda de wget Parece que no hay opciones para hacerlo más rápido.

¿Hay alguna manera de hacer wget ¿más rápido? ¿O es posible hacerlo multihilo ¿descarga?

PD: mi ancho de banda es de 4M. Yo uso este comando:

wget -c url  http://hammurabi.acc.umu.se/debian-cd/6.0.6/amd64/iso-cd/debian-6.0.6-amd64-netinst.iso

71voto

bryantsai Puntos 1917

¿Por qué no probar? axel ? Es un descargador basado en la línea de comandos.

Instalar axel y descarga de spawn por

axel -a -n [Num_of_Thread] link1 link2 link3 ...

donde '[Num_of_Thread]' es el número de conexiones paralelas que hay que crear para cada enlace que se quiera descargar.

-a sólo muestra una barra de progreso mejorada.

A diferencia de muchos otros gestores de descargas, Axel descarga todos los datos directamente al archivo de destino, utilizando un solo hilo. Esto ahorra algo de tiempo al final porque el programa no tiene que concatenar todas las partes descargadas.

67voto

hmj6jmh Puntos 121

He intentado axel en Gufran La recomendación de la empresa, pero me decepcionó enormemente. Mi objetivo era encontrar un sustituto de la CLI para DownThemAll porque acapara la CPU y el disco duro y ralentiza todo el sistema incluso en un Mac Pro de 8 núcleos. También quería un sustituto multihilo para wget y curl y no un kludge de un script que ejecuta múltiples instancias de estos. Así que busqué más y encontré lo que creo que ahora mismo es el más moderno descargador CLI multihilo que existe -- aria2 . El gran problema que tuve con axel era que "fingía" la descarga de archivos a través de SSL. Lo pillé haciendo eso con tcdump . Estaba descargando https enlaces como ordinarios http . Eso me molestó mucho y si no lo hubiera comprobado, habría tenido una falsa sensación de seguridad. Dudo que mucha gente conozca esta grave violación de la seguridad. Volviendo a aria2 Es más avanzado que cualquier otro descargador. Soporta los protocolos HTTP(S), FTP, BitTorrent y Metalink, es multiplataforma y es una guerrilla de descargas. Maximiza el ancho de banda de mi ISP sin cargar la CPU o el disco duro, a diferencia de DTA. La página de manual es gigantesca. Nunca utilizaré más que algunas de sus muchas opciones. Y, por cierto, he comprobado su rendimiento SSL con tcdump y es sólido, no falso. Escribí un script que imita el comportamiento de DTA, si no su conveniencia.

El comando básico que utilizo para obtener el ancho de banda máximo es

aria2c --file-allocation=none -c -x 10 -s 10 -d "mydir" URL

-c permite continuar la descarga si se interrumpe, -x 10 y -s 10 permiten hasta 10 conexiones por servidor, y -d "mydir" envía el archivo al directorio mydir .

aria2files.sh :

#!/bin/bash

filename="$1" # get filename from command line argument

while read -r line
do
    if [ "$line" ] # skip blank lines
    then
        if [[ "$line" =~ (https?|ftp)\:\/\/ ]] # line contains a URL, download file
        then
            echo "URL: '$line'"
            aria2c --file-allocation=none -c -x 10 -s 10 -d "$currdir" "$line"
        else # line contains a directory name, create directory if not already present
            echo "Directory: '$line'"
            currdir="$line"
            if [ ! -d "$currdir" ]
            then
                mkdir -p "$currdir" # '-p' enables creation of nested directories in one command
            fi
        fi
    fi
done < "$filename"

Lee un archivo de texto con el formato

files.txt :

dierctory 1
url1
url2
…
directory 2/subdirectory/sub-subdirectory/…
url3
url4
…
…
…

El script lee el nombre del archivo desde la línea de comandos:

aria2files.sh files.txt

Crea los directorios y descarga en ellos. Puede crear directorios anidados como se muestra en el segundo ejemplo.

Para más detalles, consulte mi post Bash script para descargar archivos desde URLs a directorios especificados listados en un archivo de texto .

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: