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