Cómo usar el comando Wget en Linux con ejemplos

En este artículo, revisaremos la utilidad wget que recupera archivos de la World Wide Web (WWW) utilizando protocolos ampliamente usados como HTTP, HTTPS, FTP, y FTPS.

Wget es una utilidad gratuita de línea de comandos y descargador de archivos de red, que viene con muchas características que facilitan la descarga de archivos, incluyendo:

  • Descargar archivos grandes o reflejar sitios web o FTP completos.
  • Descargar múltiples archivos a la vez.
  • Establecer ancho de banda y límite de velocidad para las descargas.
  • Descargar archivos a través de proxies.
  • Puede reanudar descargas abortadas.
  • Reflejar directorios recursivamente.
  • Funciona en la mayoría de los sistemas operativos tipo UNIX, así como en Windows.
  • Operación no atendida/en segundo plano.
  • Soporte para conexiones HTTP persistentes.
  • Soporte para SSL/TLS para descargas encriptadas utilizando la biblioteca OpenSSL o GnuTLS.
  • Soporte para descargas IPv4 e IPv6.

Sintaxis del comando Wget

La sintaxis básica de Wget es:

$ wget [option] [URL]

Primero, comprueba si la utilidad wget ya está instalada o no en tu caja de Linux, utilizando el siguiente comando.

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

Instalar Wget en Linux

Si Wget no está instalado, puedes instalarlo utilizando el gestor de paquetes predeterminado de tu sistema Linux, como se muestra.

$ 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]    

La opción -y utilizada aquí es para evitar las confirmaciones antes de instalar cualquier paquete. Para obtener más ejemplos de comandos y opciones de YUM y APT, lee nuestros artículos sobre:

1. Descargar un Archivo con Wget

El comando descargará un solo archivo y lo almacenará en el directorio actual. También muestra el progreso de la descarga, el tamaño, la fecha y la hora mientras se descarga.

# 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. Descargar un Archivo con Wget con un Nombre Diferente

Usando la opción -O (mayúscula), se descargan archivos con nombres diferentes. Aquí hemos dado el nombre de archivo wget.zip como se muestra a continuación.

# 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. Descargar Múltiples Archivos con HTTP y Protocolo FTP usando Wget

Aquí vemos cómo descargar múltiples archivos utilizando el protocolo HTTP y FTP con el comando wget simultáneamente.

$ 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. Descargar múltiples archivos con Wget desde un archivo

Para descargar varios archivos a la vez, usa la opción -i con la ubicación del archivo que contiene la lista de URL que se descargarán. Cada URL debe agregarse en una línea separada, como se muestra.

Por ejemplo, el siguiente archivo ‘descargar-linux.txt‘ contiene la lista de URL que se descargarán.

# 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
...

Si tu lista de URL tiene un patrón de numeración particular, puedes agregar llaves para obtener todas las URL que coincidan con el patrón. Por ejemplo, si deseas descargar una serie de kernels de Linux comenzando desde la versión 5.1.1 hasta 5.1.15, puedes hacer lo siguiente.

$ 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. Reanudar descargas incompletas con Wget

En caso de descarga de archivos grandes, a veces puede suceder que se detenga la descarga. En ese caso, podemos reanudar la descarga del mismo archivo donde se quedó con la opción -c.

Pero cuando comienzas a descargar archivos sin especificar la opción -c, wget agregará la extensión .1 al final del archivo, considerado como una descarga nueva. Por lo tanto, es una buena práctica agregar el interruptor -c al descargar archivos 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. Espejo de un sitio web completo con Wget

Para descargar, espejar o copiar un sitio web completo para verlo sin conexión, puedes usar el siguiente comando que hará una copia local del sitio web junto con todos los activos (JavaScript, CSS, imágenes).

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

Explicación del comando anterior.

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. Descargar archivos en segundo plano con Wget

Con la opción -b puedes enviar una descarga en segundo plano inmediatamente después de que comience la descarga y los registros se escribirán en el archivo 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. Establecer límites de velocidad de descarga de archivos con Wget

Con la opción --limit-rate=100k, se restringe el límite de velocidad de descarga a 100k y los registros se crearán en wget.log como se muestra a continuación.

$ 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’.

Ver el archivo wget.log y verificar la velocidad de descarga del 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. Descargar archivos protegidos por contraseña a través de FTP y HTTP con Wget

Para descargar un archivo de un servidor FTP protegido por contraseña, puedes usar las opciones --ftp-user=username y --ftp-password=password como se muestra.

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

Para descargar un archivo de un servidor HTTP protegido por contraseña, puedes usar las opciones --http-user=username y --http-password=password como se muestra.

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

10. Ignorar la Verificación del Certificado SSL de Wget

Para ignorar la verificación del certificado SSL mientras se descargan archivos a través de HTTPS, puedes usar la opción --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. Versión y Ayuda de Wget

Con las opciones --version y --help puedes ver la versión y la ayuda según sea necesario.

$ wget --version
$ wget --help

En este artículo, hemos cubierto los comandos de Linux de wget con opciones para tareas administrativas diarias. ¿Quieres saber más al respecto? Por favor, comparte a través de nuestra sección de comentarios o si hemos pasado por alto algo, háznoslo saber.

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