Como Usar o Comando Wget no Linux com Exemplos

Neste artigo, revisaremos a utilidade wget que recupera arquivos da World Wide Web (WWW) usando 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 facilitam o download de arquivos, incluindo:

  • Baixar arquivos grandes ou espelhar sites da web ou FTP completos.
  • Baixar vários arquivos de uma vez.
  • Definir largura de banda e limite de velocidade para downloads.
  • Baixar arquivos através de proxies.
  • Pode retomar downloads abortados.
  • Espelhar diretórios recursivamente.
  • Funciona 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]

Instalar 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, como 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 solicitações de confirmação antes de instalar qualquer pacote. Para mais exemplos de comandos e opções YUM e APT, leia nossos artigos sobre:

1. Baixar um Arquivo com Wget

O comando irá baixar um único arquivo e armazená-lo em um diretório atual. 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 um Arquivo com Wget e Dar um Nome Diferente

Usando a opção -O (maiúscula), baixa arquivos com nomes diferentes. Aqui fornecemos o nome do arquivo wget.zip como 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 usando Wget

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

$ 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 Wget a Partir de um Arquivo

Para baixar vários arquivos de uma só 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 abaixo.

Por exemplo, o arquivo ‘download-linux.txt‘ a seguir 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 sua lista de URLs tiver um padrão de numeração específico, você pode adicionar chaves para buscar todas as URLs que correspondam 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. Continuar Download Incompleto com Wget

No caso de downloads de arquivos grandes, às vezes pode acontecer de o download parar; 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, considerado como um novo download. Portanto, é uma boa prática adicionar a chave -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 um Site Inteiro com Wget

Para baixar, 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 recursos (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 em Segundo Plano com Wget

Com a opção -b, você pode enviar um download em segundo plano imediatamente após o início do download e os registros 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 com Wget

Com a opção --limit-rate=100k, o limite de velocidade de download é restrito a 100k e os registros serão criados em wget.log conforme 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 conforme 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 conforme 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 comandos do Linux wget com opções para tarefas administrativas diárias. Consulte o manual do wget se desejar saber mais? Por favor, compartilhe através da nossa caixa de comentários ou se esquecemos de mencionar algo, nos avise.

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