Scripts com wget

O GNU Wget é um utilitário gratuito para download não-interativo de arquivos da Web (via HTTP, HTTPS ou mesmo FTP). É um comando muito útil para quem deseja baixar várias páginas de uma vez só, por exemplo, justamente pela possibilidade de eliminar o ser humano e automatizar tarefas. Veja alguns parâmetros muito utilizados em conjunto com o comando “wget”:

  • -c – continua de onde parar, caso a conexão seja interrompida
  • -r – recursividade
  • -np – não recria todo o caminho do arquivo (o que acontece ao usar recursividade)
  • -nv – só imprime dizendo quando o arquivo foi baixado com sucesso
  • -q – sem saída de texto
  • -O – define o nome do arquivo baixado
  • -P ‘path’ – definir o diretório (path) onde serão baixados os arquivos
  • -i ‘lista.txt’ – baixa os arquivos que constam de uma lista
  • -A ‘*.x’ – baixa somente os arquivos com a extensão especificada
  • –level=depth – permite especificar um nível máximo de subdiretórios
  • –no-check-certificate – sem checar certificado SSL
  • –spider – não baixa as páginas, somente verifica se estão lá

O wget pode retornar um código de status da conexão:

  1. Sem problemas
  2. Erro genérico
  3. “Parse error—for instance”
  4. Erro de I/O no arquivo
  5. Falha na rede
  6. Falha na verificação do certificado SSL
  7. Falha na autenticação (usuário e/ou senha)
  8. Erro de protocolo
  9. Servidor enviou uma resposta de erro

Baixar um diretório usando wget

Na verdade, o HTTP não tem uma real noção de diretórios. Mesmo assim, existem algumas opções do comando wget que permitem baixar somente a partir de um nível:

Os parâmetros adicionais “-nh” indicam para não criar uma pasta com o nome do domínio (“www.exemplo.com.br”), enquanto que “–cut-dirs=1” informa para não criar diretórios 1 nível acima (“dir”). Somente será criada um dirétório de nome “sub_dir” com todos os sub-diretórios e arquivos cujo nome termine com “.gz”.

Verificação da validade de vários links

O script a seguir cria uma série de strings dentro de um loop, cada uma sendo a URL de um arquivo cujo caminho e o nome variam conforme a data que foram gerados. o comando wget verifica se existe o arquivo dessa URL: se existir, ele baixa o arquivo e encerra o programa; caso não exista, ele gera uma nova data para o dia anterior e repete a verificação. São verificadas as datas de um a cinco dias atrás.

Veja mais sobre o Wget na documentação do GNU e sobre outros comandos de rede no post Comandos de rede Linux. Sobre o comando “date”, veja o post Calendários e o comando date.