Encontrei apenas puf (buscador de URL paralelo), mas não consegui ler URLs de um arquivo; algo como
puf < urls.txt
também não funciona.
O sistema operacional instalado no servidor é o Ubuntu.
Responder1
UsandoParalelo GNU,
$ paralelo -j${empregos}wget <urls.txt
ou xargs
deGNU Findutils,
$ xargs -n 1 -P${empregos}wget <urls.txt
onde ${jobs}
é o número máximo que wget
você deseja permitir a execução simultânea (definindo -n
para 1
obter uma wget
invocação por linha em urls.txt
). Sem -j
/ -P
, parallel
executará tantos trabalhos por vez quanto os núcleos da CPU (o que não necessariamente faz sentido para o wget
limite de E/S da rede) e xargs
executará um de cada vez.
Um recurso interessante que parallel
acabou xargs
é manter separada a saída dos trabalhos em execução simultânea, mas se você não se importa com isso, xargs
é mais provável que esteja pré-instalado.
Responder2
aria2 faz isso.
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
Exemplo: aria2chttp://example.org/mylinux.iso
Responder3
Você pode implementar isso usando Python e a biblioteca pycurl. A biblioteca pycurl possui a interface "multi" que implementa seu próprio loop uniforme que permite múltiplas conexões simultâneas.
No entanto, a interface é bastante semelhante a C e, portanto, um pouco complicada em comparação com outros códigos mais "Pythônicos".
Eu escrevi um wrapper para ele que cria um cliente mais completo, semelhante a um navegador, sobre ele. Você pode usar isso como exemplo. Veja opycopia.WWW.clientmódulo. O HTTPConnectionManager envolve a multiinterface.
Responder4
Parte da página de manual do GNU Parallel contém um exemplo de wget recursivo paralelo.
https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer
O HTML é baixado duas vezes: uma vez para extrair links e outra para baixar para o disco. Outros conteúdos são baixados apenas uma vez.
Se você não precisa da recursividade, a resposta do efemiente parece óbvia.