Baixando arquivos no terminal com Wget

#unix

Para baixar arquivos existe o programa wget, o mais difundido e vários outros programas somente são um front-end para o wget, como por exemplo o gwget.

Iniciar e Continuar um Download

A forma mais simples de baixar um arquivo é: wget URL, como neste exemplo:

$ wget http://dmitryrck.com/mm.pdf

Lembrando que tanto funciona também para ftp.

O parâmetro -c permite continuar um download, caso interrompido por um CONTROL+c ou se o sistema for desligado.

% wget -c http://dmitryrck.com/mm.pdf

Download em Segundo Plano

O caractere & é usado para iniciar um programa já em segundo plano, porém a maioria dos comandos continua enviando mensagens para o terminal que os chamou. A solução segundo o próprio wget é adicionar o parâmetro -b.

$ wget -b -c http://www.host.com/arquivo.txt.bz2

Com isso pode-se até mesmo sair do terminal ou fazer logoff. Ademais é criado um arquivo de log neste formato wget-log, wget-log.1 e assim sucessivamente se a opção -q não for informada.

Redirecionamento de Saída

O redirecionamento de saída para o wget com > não funciona perfeitamente, restando ao próprio programa fazer o redirecionamento que também funciona como um registro de log.

Basta indicar o parâmetro -o com o nome do arquivo ao qual a saída será redirecionado: wget -o output URL, exemplo:

$ wget -o log http://dmitryrck.com/mm.pdf

O -o apaga o arquivo antes de gravar a saída; -a serve para adicionar a saída a um arquivo, útil para baixar em várias etapas.

Baixar Todos os Arquivos de um Site

O parâmetro -r baixa o site inteiro:

$ wget -r http://google.com

É também possível baixar somente determinados tipos de arquivo.

Use o parâmetro -A para tipos aceitos e -R para tipos recusados.

Exemplo para baixar tipo gif:

$ wget -r -A "*.gif" dmitry.eti.br

O wget é, como a maioria dos comandos, sensível a caixa, então para baixar tudo de gif:

$ wget -r -A "*.[Gg][Ii][Ff]" google.com

Para recusar a sintaxe é a mesma basta mudar -A para -R.

Lista de Arquivos

Há a possibilidade de criar uma lista com os arquivos que se deseja baixar e somente então começar a baixar; o arquivo que contém a lista deve ter o endereço completo dos arquivos, como neste exemplo:

http://dmitryrck.com/mm.pdf
http://dmitryrck.com/digitacao.pdf

Com a lista pronta e salva:

$ wget -i lista_de_arquivos

Acesso com senha

Você pode ainda informar o usuário e senha para baixar o arquivo (lembre-se que isso ficará sálvo no histórico do seu shell):

$ wget ftp://login:senha@www.host.com/arquivo.txt.bz2

Proxy

O wget e alguns outros programas em linha de comando usam a variável http_proxy, para obter informações sobre o proxy:

$ export http_proxy=http://usuario:senha@10.1.1.1:3128

Para proxy sem senha:

$ export http_proxy=http://10.1.1.1:3128

Depois disso basta usar o wget normalmente.

Erros Comuns

Os erros mais comuns são:

  • Quando um site usa php ou outra tecnologia para controlar seus downloads e constantemente usa em sua url o caractere ? que é interpretado pelo shell diferente do desejado pelo usuário, a melhor solução é colocar a url entre aspas: wget "host.com/arquivo?format=pdf";
  • Ou quando se deseja baixar um arquivo que lhe foi enviado por e-mail com isso o servidor precisa saber que você é o verdadeiro dono do endereço de e-mail desta forma a maneira mais comum de verificar isso é através de login e de cookies que o wget não utiliza;
  • Outro problema é quando for continuar um download esquecer da opção -c assim o download será feito do início e não do ponto do qual parou.