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.
Índice
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:
- 20 Comandos YUM do Linux para Gerenciamento de Pacotes
- 15 Exemplos de Comando APT no Ubuntu/Debian & Mint
- 45 Exemplos de Comando Zypper para Gerenciar o OpenSUSE Linux
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/