Como tornar o wget mais rápido ou multithreading?

29

Acabei de atualizar meu hardware de computador (cpu + placa-mãe + placa gráfica + memória + disco rígido), para que seja necessário instalar um novo sistema operacional. Tentei fazer o download do comando debian-6.0.6-amd64-netinst.iso com wget , mas a velocidade é tão lenta que não pude suportar. 4Kb/s ~ 17 Kb/s , lento como uma tartaruga em execução ou ainda mais lento se eu usar o Chrome.

Eu li as informações de ajuda do wget , parece que não há opções para torná-lo mais rápido.

Existe alguma maneira de tornar o wget mais rápido? Ou é possível fazer um download multi-threading ?

PS: minha largura de banda é de 4 milhões. Eu 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
    
por Teifi 07.11.2012 / 10:31

2 respostas

45

Por que não tentar axel ? É um downloader totalmente baseado em linha de comando.
instale o axel e o download do spawn por axel -a -n [Num_of_Thread] link1 link2 link3 ...  onde '[Num_of_Thread]' é o número de conexões paralelas para criar para cada link que você deseja baixar.

-a mostra apenas uma barra de progresso melhorada.

    
por Gufran 07.11.2012 / 11:07
42

Eu tentei axel sobre a recomendação do Gufran , mas isso me desapontou enormemente. Meu objetivo era encontrar um substituto de CLI para DownThemAll , porque ele sobrecarrega a CPU e o disco rígido e diminui todo o sistema, mesmo em um Mac Pro de 8 núcleos. Eu também queria um substituto multithread para wget e curl , não algum kludge de um script que executa várias instâncias destes. Então eu procurei mais e encontrei o que eu acho que agora é o mais moderno e mais moderno multithreaded CLI downloader que existe - aria2 . O grande problema que tive com o axel foi que ele "falsificou" o download de arquivos via SSL. Eu peguei fazendo isso com tcdump . Estava baixando https links como ordinário http . Isso realmente me irritou e se eu não tivesse checado, eu teria tido uma falsa sensação de segurança. Eu duvido que muitas pessoas conheçam essa grave violação de segurança. Voltando a aria2 , é mais avançado que qualquer outro downloader. Suporta os protocolos HTTP (S), FTP, BitTorrent e Metalink, é multiplataforma, e é uma guerrilha de download. Ele maximiza a largura de banda do meu ISP sem carga na CPU ou no disco rígido, ao contrário do DTA. A página man é gigantesca. Eu nunca usarei mais do que algumas de suas muitas opções. E, por exemplo, verifiquei seu desempenho SSL com tcdump e ele é sólido, não falso. Eu escrevi um script que imita o comportamento do DTA, se não a sua conveniência.

O comando básico que uso para obter largura de banda máxima é

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

-c permite a continuação do download se for interrompido, -x 10 e -s 10 permitem até 10 conexões por servidor e -d "mydir" envia o arquivo ao diretório mydir .

aria2files.sh :

#!/bin/bash

filename="" # 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"

Ele lê um arquivo de texto no formato:

files.txt :

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

O script lê o nome do arquivo na linha de comando:

aria2files.sh files.txt

Cria os diretórios e os downloads para eles. Pode criar diretórios aninhados, como mostrado no segundo exemplo.

Para mais detalhes veja meu post Script Bash para baixar arquivos de URLs para diretórios especificados listados em um texto arquivo .

    
por hmj6jmh 07.08.2014 / 04:23