Wget por Exemplos

Oct 5th, 2011

O site “The Geek Stuff” publicou, em 2009, um guia para o GNU Wget, onde explica, através de 15 exemplos, algumas formas de utilizar o programa. Resolvi traduzir o material e disponibilizar aqui. As linhas a seguir trazem essa tradução-não-tão-ao-pé-da-letra e com alguns comentários próprios.

Hard Disk - Andrew Hazelden

O Wget é a melhor opção para baixar arquivos da internet. Ele pode lidar muito bem com todas as situações complexas de downloads, incluindo arquivos grandes, recursão, não-interação, múltiplos arquivos etc.

Revisaremos neste artigo como usar o Wget em vários cenários, usando 15 exemplos impressionantes.

1. Download de um Arquivo Usando wget

O exemplo a seguir baixa um arquivo da internet e o armazena no diretório corrente:

$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

Durante o download será mostrada uma barra de progresso com as seguintes informações:

  • porcentagem do progresso;
  • quantidade total de bytes baixados até então;
  • velocidade corrente do download;
  • tempo restante (eta).

2. Baixar e Armazenar um Arquivo com Nome Diferente Usando wget -O

Por padrão o Wget pegará a última palavra após a última barra para nomear o arquivo, o que nem sempre será apropriado.

Errado: o exemplo a seguir baixará e armazenará o arquivo com o nome download_script.php?src_id=7701.

$ wget http://www.vim.org/scripts/download_script.php?src_id=7701

Apesar do arquivo baixado estar no formato Zip, ele estará armazenado como mostrado abaixo:

$ ls
download_script.php?src_id=7701

Certo: para corrigir esse problema, podemos especificar o nome de arquivo de saída usando a opção -O, como:

$ wget -O taglist.zip http://www.vim.org/scripts/\
download_script.php?src_id=7701

3. Especificar a Velocidade/Taxa de Download Usando wget –limit-rate

Durante a execução do Wget, por padrão ele tentará ocupar toda a largura de banda disponível. Isso pode não ser aceitável ao baixar arquivos muito grandes em servidores em produção. Assim, para evitar isso podemos limitar a velocidade de download usando --limit-rate, como mostrado a seguir — no exemplo, a velocidade é limitada a 200 k:

$ wget --limit-rate=200k http://www.openss7.org/repos/tarballs/\
strx25-0.9.2.1.tar.bz2

4. Continuar Downloads Incompletos Usando wget -c

Reinicie um download que foi parado no meio usando a opção -c do Wget, como mostrado:

$ wget -c http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

Isso é muito útil quando você tiver iniciado o download de um arquivo muito grande que foi interrompido no meio. Em vez de começar de novo todo o download, pode-se reiniciar de onde parou.

Nota: Se um download está parado no meio, ao iniciar novamente o processo sem a opção -c, o Wget adicionará um .1 automaticamente ao nome do arquivo — já que um arquivo com o mesmo nome existe no diretório. Se um arquivo com o .1 no final do nome existir, será adicionado .2 e assim por diante.

5. Baixe em Segundo-plano Usando wget -b

Para um download muito grande, coloque o processo em segundo-plano usando a opção -b do Wget, como em:

$ wget -b http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Continuing in background, pid 1984.
Output will be written to `wget-log'.

Isso iniciará o download lhe devolvendo o shell. Você pode sempre checar o estado do download usando tail -f, como mostrado:

$ tail -f wget-log
Saving to: `strx25-0.9.2.1.tar.bz2.4'

0K .......... .......... .......... .......... ..........  1% 65.5K 57s
50K .......... .......... .......... .......... ..........  2% 85.9K 49s
100K .......... .......... .......... .......... ..........  3% 83.3K 47s
150K .......... .......... .......... .......... ..........  5% 86.6K 45s
200K .......... .......... .......... .......... ..........  6% 33.9K 56s
250K .......... .......... .......... .......... ..........  7%  182M 46s
300K .......... .......... .......... .......... ..........  9% 57.9K 47s

Além disso, leia este texto sobre multitail sobre como usar o comando tail efetivamente para visualizar múltiplos arquivos.

6. Mascare o User Agent e Mostre o Wget como um Navegador Usando wget –user-agent

Alguns sites podem impedi-lo de baixar suas páginas identificando que o user agent não é um navegador. Assim, você pode mascarar o user agent usando a opção --user-agent e mostrar o Wget como um navegador:

$ wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) \
Gecko/2008092416 Firefox/3.0.3" URL-TO-DOWNLOAD
Nota: Para evitar o download de um site pelo Wget, pode-se adicionar a linha de código a seguir no arquivo .htaccess. Contudo, caso o usuário mascare o Wget como um navegador, esse código perde o efeito.

SetEnvIfNoCase User-Agent "^Wget" bad_bot

<Limit GET POST>
    Order Allow,Deny
    Allow from all
    Deny from env=bad_bot
</Limit>

7. Teste a URL de Download Usando wget –spider

Ao fazer um download agendado, deve-se checar se o mesmo vai acontecer bem ou não, no tempo agendado. Para tanto, copie a linha exata do agendamento e adicione a opção --spider para checar:

$ wget --spider DOWNLOAD-URL

Se a URL estiver correta, será exibida uma saída como:

$ wget --spider download-url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.

Isso assegura o sucesso do download na hora agendada. Mas quando uma URL errada for passada, você receberá o seguinte erro:

$ wget --spider download-url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 404 Not Found
Remote file does not exist -- broken link!!!

Pode-se usar a opção --spider nos seguintes cenários:

  • checar antes de agendar um download;
  • monitorar a disponibilidade de um website em intervalos específicos; e
  • verificar suas páginas favoritas e encontrar quais não existem mais.

8. Aumente o Número Total de Tentativas Usando wget –tries

Se há problema na conexão com a internet e o arquivo a ser baixado é grande, há chances do download falhar. Por padrão, o Wget tenta 20 vezes fazer o download com sucesso.

Se necessário, pode-se aumentar o número de tentativas usando a opção --tries:

$ wget --tries=75 DOWNLOAD-URL

9. Baixe Múltiplos Arquivos/URLs Usando wget -i

Primeiro grave todos os arquivos e URLs a serem baixados em um arquivo texto como:

$ cat > download-file-list.txt
URL1
URL2
URL3
URL4

Agora passe o arquivo com a lista como argumento para o Wget usando a opção -i:

$ wget -i download-file-list.txt

Na próxima página, mais 5 exemplos de uso do Wget e um bônus para os interessados no programa.

Pages: 1 2

About author:

José Lopes é pós-graduado em Administração em Redes Linux pela Universidade Federal de Lavras e profissional certificado ITILv3 Foundation. Encontra na música, literatura e no cinema, grandes fontes de inspiração. Adora tecnologia em geral, principalmente ligada à informática, sua área de atuação.

All entries by José Lopes


2 Responses to “Wget por Exemplos”

  1. Luciano says:

    Parabéns pelas dicas com o WGET, pois ele é um software versátil e não conhecido por usuários de outros sistemas operacionais. Utilizo muito ele para fazer download de ISO’s e às vezes arquivos maiores e nunca tive nenhum problema.
    Obrigado.

Leave a Reply