Linux slogan
Visite também: BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Artwiz by Still_Dre
Por stilldre
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Baixando todos os arquivos de uma URL com o wget
Linux user
Publicado por Davidson Rodrigues Paulo em 29/04/2006

Login: davidsonpaulo, 3496806 pontos | Blog: http://davidsonpaulo.com/
[ Hits: 15206 ]

Baixando todos os arquivos de uma URL com o wget

Hoje eu descobri uma paradinha que há muito eu tava querendo saber como se fazia. Fui dar uma procurada pra ver se havia sido lançada a versão 2.14 do FreeRock GNOME, e vi que havia uma versão de testes. Bem, antes uma versão de testes do FreeRock do que uma versão "estável" do Dropline.

Pois bem. Como é uma versão instável, eles ainda não lançaram o ISO, de forma que, para baixar todos os pacotes, eu teria que, teoricamente, entrar em algum dos mirrors do projeto e baixar os pacotes um a um. É lógico que eu não aceitei essa solução e tratei de procurar um jeito de fazer isso de forma automática.

Dando uma fuçada na página de manual do wget descobri um recurso interessante: o download de URL's contidas em um arquivo HTML. Assim ficou muito mais fácil.

Veja aqui um dos diretórios de onde eu precisava baixar todos arquivos com extensão .tgz (pacotes para Slackware). Agora, veja os procedimentos para baixar todos esses arquivos:

$ wget http://slackware.rol.ru/frg/frg-unstable/frgnome/bindings/
$ sed -n 's/^<IMG SRC.*<A/<A/;/.tgz/p' index.html > lista
$ wget -i lista -F \

> --base http://slackware.rol.ru/frg/frg-unstable/frgnome/bindings/

O primeiro comando faz o download da página HTML (index.html), que contém os links para os arquivos que eu quero baixar.

O segundo comando faz uso do sed para retirar do documento as tags com as imagens (s/^<IMG SRC.*<A/<A/) e mostrar apenas as linhas que tivessem links para os arquivos de extensão .tgz (/.tgz/p).

Por fim, o terceiro comando usa o arquivo lista como lista de URL's em formato HTML (-F) para o wget baixar (-i lista). O parâmetro --base serve para especificar o prefixo das URL's, que deverá ser sempre o mesmo endereço de onde obtivemos o arquivo index.html (nesse caso, http://slackware.rol.ru/frg/frg-unstable/frgnome/bindings/ - não se esqueça de colocar a "/" no final do endereço, ou então não funcionará).

Voilà!

Abraços,

Davidson Paulo


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Criando usuários a partir de uma lista
   Dica Linux recomendada Executando comandos em looping no shell
   Dica Linux recomendada Bloqueando tráfego via MAC com iptables
   Dica Linux recomendada Expressão regular para validar um IP
   Dica Linux recomendada Eliminando linhas de comentário ou linhas em branco no Linux

Comentários
[1] Comentário enviado por in54no em 29/04/2006 - 21:49h:

opa, boa dica kra...
eu uso o 2.12 (freerock) e para o 2.14 ele atualiza por "cima", apenas dando upgradepkg, ou seria melhor remover o 2.12 antes? o meu 2.12 nao inicia mais corretamente :( valew.
teh mais, fica com Deus!


[2] Comentário enviado por albertoivo em 30/04/2006 - 00:20h:

nao conseguir fazer aqui..


[3] Comentário enviado por davidsonpaulo em 30/04/2006 - 08:30h:

in54no,

O upgradepkg remove os pacotes já instalados com o removepkg antes de instalar as novas versões. Para atualizar o meu FreeRock eu apenas baixei todos os pacotes e, no diretório base onde eles estavam, dei o comando:

# for PKG in `find -name '*.tgz'` ; do upgradepkg --install-new $PKG ; done

albertoivo,

O que foi que de errado? Apenas a título de informação, as duas últimas linhas são um comando só. Aquela ">" não faz parte do comando.

Abraços


[4] Comentário enviado por Caiapó em 30/04/2006 - 12:44h:

Uso muito esse scriptzinho aí (autoria do Carlos 'Kurumin' Morimoto). Vc salva como executável numa pasta qualquer (chmod +x scriptzinho) e despois executa "./scriptzinho".

A vantagem é que o danado vai baixar o arquivo, mesmo que o site esteja instável, com muitas saídas do ar. E mesmo que interrompa o download pra aliviar a banda (use CTRL+C pra parar) quando executar o scriptzinho novamente tudo vai recomeçar de onde parou.

Boa sorte!
_____________________________________________

#!/bin/sh

continuar=1
parar=0
while [ "$parar" -lt "$continuar" ]
do

wget -c http://www.endereço_completo.com.br/arquivo.tar.gz
done


[5] Comentário enviado por gabriel.bezerra em 01/05/2006 - 00:32h:

no wget há um parâmetro que o deixa recursivo, ou seja, ele baixa tudo que uma pagina endereça, e suas subpáginas também. eu só não lembro qual é.


[6] Comentário enviado por davidsonpaulo em 01/05/2006 - 00:51h:

toufeliz,

O parâmetro é -R. Ele serve pra baixar recursivamente todos os arquivos de uma URL. As desvantagens são que, além de não poder especificar qual tipo de arquivo queremos baixar, ele baixo o conteúdo do site inteiro, e não apenas da URL digitada.


[7] Comentário enviado por rbn_jesus em 17/08/2007 - 09:47h:

Está tua dica mereceu ir para meus favoritos!!!!!


[8] Comentário enviado por ZiroCool em 01/08/2009 - 15:26h:

davidsonpaulo,

Na verdade o -R é a lista de extensões reijetadas pelo modo recursivo.

A sintaxe é esse aqui:

wget -r -A bz2 URL

No caso o -r põe o wget em modo recursivo, e o -A especifica as extensões aceitas para o download.

Uma mão na roda... ;)



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.