Baixando arquivos no terminal com Wget
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.