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 https://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 https://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 https://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 https://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 https://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:
https://dmitryrck.com/mm.pdf
https://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
wgetnão utiliza; - Outro problema é quando for continuar um download esquecer da opção
-cassim o download será feito do início e não do ponto do qual parou.