Se você procura por um meio de fazer download de arquivos da web, através da linha de comando, o Wget é uma das ferramentas de uso simples e objetivo, que irá lhe auxiliar nessa necessidade.
Essa ferramenta suporta o download de arquivos fazendo uso dos protocolos HTTP, HTTPS e FTP.
Dentre as opções que o Wget possui, existem as funções que permitem baixar vários arquivos, a retomada de downloads interrompidos, a limitação da largura de banda, downloads de forma recursiva, download em segundo plano bem como espelhamento de site, entre outros.
O Wget é compatível com qualquer distribuição Linux, tanto nas mais antigas bem como nas mais recentes, a sua instalação é descomplicada. Por exemplo, você pode usar o wget para baixar arquivos em um servidor VPS Linux na Homehost.
Neste artigo, você irá conferir explicações e exemplos práticos sobre o uso dessa poderosa ferramenta e suas principais opções.
Conteúdo
Como instalar o Wget no Linux
O wget vem pré-instalado na ampla maioria das distribuições Linux e concluir a sua instalação é bem simples.
Você pode iniciar conferindo se o Wget está presente na máquina Linux desejada.
Portanto, abra a interface do terminal, digite wget e pressione a tecla Enter.
Se o Wget estiver instalado, o terminal irá exibir o seguinte aviso para você wget: missing URL.
Em contrapartida, se não estiver instalado, o terminal exibirá o aviso: wget command not found ou No such file or directory.
Havendo a confirmação de que não há o Wget instalado, você poderá fazer sua instalação de forma fácil, através do gerenciador de pacotes da distribuição que você está usando.
Como instalar o Wget em distribuições baseadas em Debian, como Ubuntu, Minti.
Sintaxe e saída esperada:
$ sudo apt install wget
Como instalar o Wget em distribuições RedHat, como no CentOS e Fedora.
Instalar o Wget em distribuições RedHat é tão simples quanto em distribuições baseadas em Debian.
Sintaxe e saída esperada:
$ sudo yum install wget
Conhecendo a estrutura do Wget no Linux
Antes de você iniciar a prática no uso do comando Wget, vale a pena conferir como é a estrutura da sintaxe deste utilitário.
As sintaxes do Wget possuem a seguinte definicão:
wget [opções] [url]
Ao passo que, opções são qualquer uma ou mais de uma das funções auxiliares em que o Wget aceita. Iremos tratar delas a seguir.
A URL refere-se à URL de um arquivo ou diretório em que desejamos fazer o download ou sincronismo.
Como fazer downloads com o Wget
No método de uso mais básico, sem o uso de qualquer opção, o Wget faz o download do dado para o diretório em que o usuário estiver no momento.
No exemplo a seguir, vamos baixar o arquivo zipado da instalação mais recente do WordPress.
Comando e saída:
$ wget https://wordpress.org/latest.zip
Então, como você pode conferir, o resultado da saída do comando começa pela resolução da URL digitada pelo IP correspondente a ela.
Em seguida, é feita a conexão de fato ao servidor externo e o download do arquivo é iniciado.
Enquanto a transferência segue em execução, uma barra de progresso é exibida junto ao nome do arquivo, seu tamanho, velocidade do download e tempo de conclusão.
Quando a transferência terminar, o arquivo estará localizado no mesmo diretório em que o usuário estiver no momento.
Caso você queira ocultar a saída e ter a execução silenciosa deste comando, inclua a opção -q, ficando assim:
$ wget -q https://wordpress.org/latest.zip
Se você baixar o mesmo arquivo outra vez e no mesmo diretório, o Wget irá incluir um número ao final do arquivo.
Baixar e salvar arquivo com um nome diferente usando o Wget
Você pode se deparar em algum momento com algum procedimento em que seja necessário alterar o nome de um arquivo baixado. Todavia, fazer isso durante o download fará você economizar alguns comandos.
Então, para baixar um arquivo com um nome diferente do qual está na fonte, use a opção -O seguida pelo nome que desejado.
$ wget -O wordpress-instalador.zip https://wordpress.org/latest.zip
Em suma, o comando acima salvará o arquivo wordpress.zip com o nome wordpress-instalador.zip quando o download terminar.
Baixando um arquivo para um diretório específico
Ao usar o Wget de forma básica, você perceberá que o comando salvará o conteúdo baixado no diretório em que seu usuário estiver.
Quando você precisar salvar o conteúdo baixado em um local diferente, deverá usar a opção -P na sintaxe do comando.
Por exemplo, salvaremos o instalador do WordPress em um diretório diferente do atual do usuário:
$ wget -P /home/dados https://wordpress.org/latest.zip
O comando acima fará com que o arquivo .zip em questão seja salvo no diretório /home/dados.
Como limitar a velocidade de download
Quando você possui a tarefa de baixar um arquivo muito grande e não pode ocupar a largura de banda durante a transferência, há a possibilidade de impor um limite de tráfego enquanto o arquivo trafega na rede.
Assim, você poderá fazer uso da opção –limit-rate, que por padrão, mede a velocidade em bytes/segundo.
Porém, você precisará também informar qual a unidade de medida na transferência, acrescentando k, m ou g, que respectivamente representam em unidades kilobytes, megabytes e gigabytes.
No exemplo abaixo, o comando fará download do pacote do cluster mysql, tendo 1MB como limite de velocidade no download:
$ wget –limit-rate=1m https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster_8.0.33-1ubuntu23.04_amd64.deb-bundle.tar
Desse modo, o download permanece com a velocidade constante de 1MB do início ao fim, não ocupando toda a velocidade da conexão.
Como retomar o download interrompido
Em situações em que você baixar arquivos muito grande e houver a interrupção da conexão, basta utilizar a opção -c para retomar o processo do download de onde foi interrompido sem a necessidade de recomeçar do zero.
Neste exemplo, fizemos a retomada do download do arquivo do cluster mysql.
$ wget -c https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster_8.0.33-1ubuntu23.04_amd64.deb-bundle.tar
Porém, entretanto, se o servidor que hospeda os dados não suportar a retomada do processo, o comando fará o reinício da transferência desde o zero, substituindo o arquivo que foi parcialmente baixado.
Como fazer download em segundo plano com o wget
Fazer o download em segundo plano nos permite continuar utilizando o terminal enquanto a transferência estiver em andamento.
Isso é muito útil quando temos acesso a apenas uma interface de linha de comando e queremos economizar tempo em tarefas mais demoradas.
Sendo assim, fazemos uso da opção -b, como no próximo exemplo, em que fazemos o download novamente do arquivo do cluster mysql.
$ wget -b https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster_8.0.33-1ubuntu23.04_amd64.deb-bundle.tar
Como você pode observar acima, na saída do comando há o armazenamento no arquivo wget-log.
E ainda assim, se em algum momento você sentir a necessidade de conferir como está o processo do download, use o comando tail.
Sintaxe do comando:
$tail -f wget-log
Configurar tentativas de repetição
Em conexões com a internet que oscilam com frequência, pode haver interrupção do download várias vezes.
Portanto, para contornar este problema, é possível fazermos o aumento das tentativas de retomada do download usando a opção -tries.
Exemplo de sintaxe:
$ wget -tries=100 https://wordpress.org/latest.zip
Dessa forma, o comando fará até 100 tentativas de download, se necessário.
Como baixar vários arquivos de uma vez com o Wget
Você tem vários arquivos de um mesmo servidor de origem ou de várias origens diferentes, então, poderá baixá-los de forma simultânea no mesmo comando.
Para tanto, basta você usar a opção -i seguida de um arquivo contendo a lista de URLs dos dados a serem baixadas. Vale lembrar que cada URL precisa estar separada da outra, uma por linha.
Como exemplo, criamos o arquivo downloads.txt e nele incluímos as URLs para download do instalador do Grafana, Mysql e de um patch do Linux.
$ wget -i downloads.txt
A seguir, podemos conferir a saída do comando. O download do arquivo seguinte somente inicia quando o anterior terminar.
Fazer download pelo FTP
Para baixar um arquivo de um servidor FTP protegido por senha, especifique o nome de usuário e a senha conforme mostrado abaixo:
$ wget –ftp-user=Usuario_FTP –ftp-password=Senha_FTP ftp://ftp.siteexemplo.com/nomdoarquivo.extensao
Como recuperar um site completo com o Wget
O Wget é capaz de baixar a cópia da estrutura de um site.
Desse modo, com a opção –mirror e algumas outras opções adicionais, o comando efetua a cópia local completa do site desejado, incluindo links internos, estrutura do CSS, código JavaScript, imagens.
$ wget –mirror –convert-links –page-requisites –no-parent -P Downloads/site/ https://www.homehost.com.br/blog/
Uma breve explicação sobre as opções usadas no comando:
–mirror: Faz com que o download se torne repetitivo.
–convert-links: Essa opção é responsável por converter todos os links para uso funcional no ambiente offline.
–page-requisites: Opção que faz a inclusão de todos os arquivos essenciais da estrutura do site, os já citados CSS, JS e as imagens.
–no-parent: Faz com que todos os diretórios acima da hierarquia pai não sejam baixados.
Em outras palavras, será baixado apenas o conteúdo do site.
Como localizar links quebrados com o Wget
Se você faz manutenção de sites e está à procura de uma forma para avaliar os links dos sites, à procura de links que retornem o erro 404, poderá usar o poder do comando Wget para essa finalidade.
$ wget -o wget-log -r -l 5 –spider https://www.homehost.com.br
Explicando as opções usadas com o comando:
-o: Responsável por reunir a saída do comando em um arquivo para análise posteriormente.
-l: Define a quantidade de repetições que o comando fará, caso necessário.
-r: Essa opção é transforma o comando em recursivo, ou seja, fará a varredura em subdiretórios e links.
–spider: Ativa o modo “aranha”, responsável por fazer a busca dos links quebrados, sem a necessidade de salvar páginas.
Enquanto o comando estiver em execução, não haverá saída.
Então, quando o comando for finalizado, você poderá analisar o arquivo web-log para filtrar os links com problemas.
Para tanto, há o seguinte comando para facilitar este trabalho:
$ grep -B 2 ‘404’ wget-log | grep “http” | cut -d ” ” -f 4 | sort -u
Como baixar arquivos numerados
Se você possui uma lista de arquivos que está numerada e deseja baixar uma determinada faixa deles, poderá fazer isso de forma fácil, para tanto, use a seguinte sintaxe:
$ wget https://www.homehost.com.br/blog/{1..50}.jpg
No término do comando, haverá um pequeno relatório informando o tempo decorrido, quantos arquivos encontrados bem como o tamanho deles.
Ignorar a checagem do https
Atualmente, a ampla maioria dos sites possuem certificados SSL, nos obrigando a digitar o protocolo HTTPS no início da URL em algumas situações.
Mas, com o comando Wget temos uma forma de ignorar o protocolo de segurança, principalmente em casos que o certificado está inválido (vencido).
Então, usamos a opção –no-check-certificate para essa finalidade.
Exemplo de sintaxe:
$ wget –no-check-certificate http://wordpress.org/latest.zip
Rejeitar determinados arquivos com o Wget
Às vezes, não precisamos baixar um ou mais tipos de arquivos de determinados formatos. Nestes casos, usamos a opção –reject.
$ wget –reject=html –mirror -p –convert-links -P ./LOCAL https://www.homehost.com.br
Com isso, essa sintaxe de comando irá varrer o site por completo, baixando todos os arquivos, exceto os arquivos que possuem a extensão .html.
Baixar determinada extensão de arquivos com o Wget
Um pouco contrário ao exemplo anterior, no comando a seguir, você poderá baixar determinado tipo de arquivo com base em sua extensão e as demais extensões não serão baixadas.
Por exemplo, com o comando abaixo, você poderá baixar os arquivos com a extensão .jpg:
$ wget -r -A.jpg –mirror -p –convert-links -P ./LOCAL https://www.homehost.com.br
Assim como no exemplo anterior, essa sintaxe de comando irá varrer o site por completo, porém, baixará apenas os arquivos .jpg.
Em ambos os exemplos, ao final do processo o tempo decorrido é mostrado, a quantidade de arquivos baixados assim como o tamanho total.
Considerações finais
Por aqui, vimos neste artigo várias das muitas utilidades que o Wget possui no Linux.
Com este comando, você é capaz de baixar desde um arquivo simples a múltiplos arquivos.
Além disso, vimos como é possível retomar downloads parciais, e usá-lo para outros fins avançados como o download de um site ou como localizar URLs com erro 404.
Você pode conferir outras funcionalidades não abordadas neste artigo, dessa forma, visite a página do Manual do Wget.