Como Usar o Comando Wget no Linux com Exemplos

Neste artigo, iremos revisar a utilidade wget que recupera arquivos da World Wide Web (WWW) utilizando protocolos amplamente utilizados como HTTP, HTTPS, FTP, e FTPS.

Wget é um utilitário de linha de comando gratuito e baixador de arquivos de rede, que vem com muitos recursos que tornam os downloads de arquivos fáceis, incluindo:

  • Download de arquivos grandes ou espelhar sites da web ou FTP completos.
  • Download de vários arquivos de uma só vez.
  • Definir largura de banda e limite de velocidade para downloads.
  • Download de arquivos através de proxies.
  • Pode retomar downloads abortados.
  • Espelhamento recursivo de diretórios.
  • Executa na maioria dos sistemas operacionais semelhantes ao UNIX, bem como no Windows.
  • Operação não assistida/em segundo plano.
  • Suporte para conexões HTTP persistentes.
  • Suporte para SSL/TLS para downloads criptografados usando a biblioteca OpenSSL ou GnuTLS.
  • Suporte para downloads IPv4 e IPv6.

Sintaxe do Comando Wget

A sintaxe básica do Wget é:

$ wget [option] [URL]

Primeiro, verifique se o utilitário wget já está instalado ou não em seu sistema Linux, usando o seguinte comando.

$ rpm -q wget         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ dpkg -l | grep wget [On Debian, Ubuntu and Mint]

Instale o Wget no Linux

Se o Wget não estiver instalado, você pode instalá-lo usando o gerenciador de pacotes padrão do seu sistema Linux, conforme mostrado.

$ sudo apt install wget -y      [On Debian, Ubuntu and Mint]
$ sudo yum install wget -y      [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a net-misc/wget  [On Gentoo Linux]
$ sudo pacman -Sy wget           [On Arch Linux]
$ sudo zypper install wget      [On OpenSUSE]    

A opção -y usada aqui é para evitar prompts de confirmação antes de instalar qualquer pacote. Para mais exemplos e opções de comandos YUM e APT, leia nossos artigos sobre:

1. Baixar um Arquivo com Wget

O comando irá baixar um único arquivo e armazená-lo no diretório atual. Ele também mostra o progresso do download, tamanho, data, e hora durante o download.

# wget http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz

--2021-12-10 04:15:16--  http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3565643 (3.4M) [application/x-gzip]
Saving to: ‘wget2-2.0.0.tar.gz’

wget2-2.0.0.tar.gz      100%[==========>]   3.40M  2.31MB/s    in 1.5s    

2021-12-10 04:15:18 (2.31 MB/s) - ‘wget2-2.0.0.tar.gz’ saved [3565643/3565643]

2. Baixar Arquivo com Wget com um Nome Diferente

Usando a opção -O (maiúscula), baixa arquivos com nomes diferentes. Aqui fornecemos o nome do arquivo wget.zip conforme mostrado abaixo.

# wget -O wget.zip http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz

--2021-12-10 04:20:19--  http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 446966 (436K) [application/x-gzip]
Saving to: ‘wget.zip’

wget.zip      100%[===================>] 436.49K   510KB/s    in 0.9s    

2021-12-10 04:20:21 (510 KB/s) - ‘wget.zip’ saved [446966/446966]

3. Baixar Múltiplos Arquivos com HTTP e Protocolo FTP

Aqui vemos como baixar múltiplos arquivos usando o comando wget simultaneamente com os protocolos HTTP e FTP.

$ wget http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz ftp://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz.sig

--2021-12-10 06:45:17--  http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3565643 (3.4M) [application/x-gzip]
Saving to: ‘wget2-2.0.0.tar.gz’

wget2-2.0.0.tar.gz      100%[==========>]   4.40M  4.31MB/s    in 1.1s    

2021-12-10 06:46:10 (2.31 MB/s) - ‘wget2-2.0.0.tar.gz’ saved [3565643/3565643]

4. Baixar Múltiplos Arquivos com o Wget a partir de um Arquivo

Para baixar vários arquivos de uma vez, use a opção -i com o local do arquivo que contém a lista de URLs a serem baixadas. Cada URL precisa ser adicionada em uma linha separada, conforme mostrado.

Por exemplo, o seguinte arquivo ‘download-linux.txt‘ contém a lista de URLs a serem baixadas.

# cat download-linux.txt 

https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.5-x86_64-dvd1.iso
https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.2.0-amd64-DVD-1.iso
# wget -i download-linux.txt

--2021-12-10 04:52:40--  https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.248, 91.189.88.247, 91.189.91.124, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.248|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3071934464 (2.9G) [application/x-iso9660-image]
Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’

ubuntu-20.04.3-desktop-amd64   4%[=>      ] 137.71M  11.2MB/s    eta 3m 30s
...

Se a sua lista de URLs tiver um padrão de numeração específico, você pode adicionar chaves para buscar todas as URLs que correspondem ao padrão. Por exemplo, se você quiser baixar uma série de kernels do Linux começando da versão 5.1.1 até 5.1.15, você pode fazer o seguinte.

$ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.{1..15}.tar.gz

--2021-12-10 05:46:59--  https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz
Resolving mirrors.edge.kernel.org (mirrors.edge.kernel.org)... 147.75.95.133, 2604:1380:3000:1500::1
Connecting to mirrors.edge.kernel.org (mirrors.edge.kernel.org)|147.75.95.133|:443... connected.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not trusted.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not yet activated.
The certificate has not yet been activated
HTTP request sent, awaiting response... 200 OK
Length: 164113671 (157M) [application/x-gzip]
Saving to: ‘linux-5.1.1.tar.gz’

linux-5.1.1.tar.gz      100%[===========>] 156.51M  2.59MB/s    in 61s     

2021-12-10 05:48:01 (2.57 MB/s) - ‘linux-5.1.1.tar.gz’ saved [164113671/164113671]

--2021-12-10 05:48:01--  https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.2.tar.gz
Reusing existing connection to mirrors.edge.kernel.org:443.
HTTP request sent, awaiting response... 200 OK
Length: 164110470 (157M) [application/x-gzip]
Saving to: ‘linux-5.1.2.tar.gz’

linux-5.1.2.tar.gz     19%[===========]  30.57M  2.58MB/s    eta 50s

5. Retomar Download Incompleto com o Wget

No caso de download de arquivos grandes, às vezes pode acontecer de o download ser interrompido. Nesse caso, podemos retomar o download do mesmo arquivo de onde parou com a opção -c.

Mas quando você começa a baixar arquivos sem especificar a opção -c, o wget adicionará a extensão .1 ao final do arquivo, considerando-o como um novo download. Portanto, é uma boa prática adicionar o interruptor -c ao baixar arquivos grandes.

# wget -c https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso

--2021-12-10 05:27:59--  https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.247, 91.189.91.123, 91.189.91.124, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.247|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 3071934464 (2.9G), 2922987520 (2.7G) remaining [application/x-iso9660-image]
Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’

ubuntu-20.04.3-desktop-amd64.iso        5%[++++++> ]   167.93M  11.1MB/s               
^C
[root@tecmint ~]# wget -c https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
--2021-12-10 05:28:03--  https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.248, 91.189.91.124, 91.189.91.123, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.248|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 3071934464 (2.9G), 2894266368 (2.7G) remaining [application/x-iso9660-image]
Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’

ubuntu-20.04.3-desktop-amd64.iso        10%[+++++++=====> ] 296.32M  17.2MB/s    eta 2m 49s ^

6. Espelhar Site Inteiro com o Wget

Para baixar ou espelhar ou copiar um site inteiro para visualização offline, você pode usar o seguinte comando que fará uma cópia local do site, juntamente com todos os ativos (JavaScript, CSS, Imagens).

$ wget --recursive --page-requisites --adjust-extension --span-hosts --convert-links --restrict-file-names=windows --domains yoursite.com --no-parent yoursite.com

Explicação do comando acima.

wget \
     --recursive \ # Download the whole site.
     --page-requisites \ # Get all assets/elements (CSS/JS/images).
     --adjust-extension \ # Save files with .html on the end.
     --span-hosts \ # Include necessary assets from offsite as well.
     --convert-links \ # Update links to still work in the static version.
     --restrict-file-names=windows \ # Modify filenames to work in Windows as well.
     --domains yoursite.com \ # Do not follow links outside this domain.
     --no-parent \ # Don't follow links outside the directory you pass in.
         yoursite.com/whatever/path # The URL to download

7. Baixar Arquivos Wget em Segundo Plano

Com a opção -b, você pode enviar um download para o segundo plano imediatamente após o início do download e os logs são escritos no arquivo wget.log.

$ wget -b wget.log https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso

Continuing in background, pid 8999.
Output will be written to ‘wget.log’.

8. Definir Limites de Velocidade de Download do Wget

Com a opção --limit-rate=100k, a velocidade de download é limitada a 100k e os logs serão criados em wget.log como mostrado abaixo.

$ wget -c --limit-rate=100k -b wget.log https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso

Continuing in background, pid 9108.
Output will be written to ‘wget-log’.

Visualize o arquivo wget.log e verifique a velocidade de download do wget.

$ tail -f wget-log 

 5600K .......... .......... .......... .......... ..........  0%  104K 8h19m
 5650K .......... .......... .......... .......... ..........  0%  103K 8h19m
 5700K .......... .......... .......... .......... ..........  0%  105K 8h19m
 5750K .......... .......... .......... .......... ..........  0%  104K 8h18m
 5800K .......... .......... .......... .......... ..........  0%  104K 8h18m
 5850K .......... .......... .......... .......... ..........  0%  105K 8h18m
 5900K .......... .......... .......... .......... ..........  0%  103K 8h18m
 5950K .......... .......... .......... .......... ..........  0%  105K 8h18m
 6000K .......... .......... .......... .......... ..........  0% 69.0K 8h20m
 6050K .......... .......... .......... .......... ..........  0%  106K 8h19m
 6100K .......... .......... .......... .......... ..........  0% 98.5K 8h20m
 6150K .......... .......... .......... .......... ..........  0%  110K 8h19m
 6200K .......... .......... .......... .......... ..........  0%  104K 8h19m
 6250K .......... .......... .......... .......... ..........  0%  104K 8h19m
...

9. Baixar Arquivos Protegidos por Senha via FTP e HTTP com Wget

Para baixar um arquivo de um servidor FTP protegido por senha, você pode usar as opções --ftp-user=username e --ftp-password=password como mostrado.

$ wget --ftp-user=narad --ftp-password=password ftp://ftp.example.com/filename.tar.gz

Para baixar um arquivo de um servidor HTTP protegido por senha, você pode usar as opções --http-user=username e --http-password=password como mostrado.

$ wget --http-user=narad --http-password=password http://http.example.com/filename.tar.gz

10. Ignorar Verificação de Certificado SSL do Wget

Para ignorar a verificação do certificado SSL ao baixar arquivos via HTTPS, você pode usar a opção --no-check-certificate:

$ wget --no-check-certificate https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz

--2021-12-10 06:21:21--  https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz
Resolving mirrors.edge.kernel.org (mirrors.edge.kernel.org)... 147.75.95.133, 2604:1380:3000:1500::1
Connecting to mirrors.edge.kernel.org (mirrors.edge.kernel.org)|147.75.95.133|:443... connected.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not trusted.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not yet activated.
The certificate has not yet been activated
HTTP request sent, awaiting response... 200 OK
Length: 164113671 (157M) [application/x-gzip]
Saving to: ‘linux-5.1.1.tar.gz’
...

11. Versão e Ajuda do Wget

Com as opções --version e --help, você pode visualizar a versão e a ajuda conforme necessário.

$ wget --version
$ wget --help

Neste artigo, cobrimos os comandos do Linux wget com opções para tarefas administrativas diárias. Consulte o man wget se desejar saber mais a respeito? Por favor, compartilhe através da nossa caixa de comentários ou nos avise se deixamos algo de fora.

Source:
https://www.tecmint.com/10-wget-command-examples-in-linux/