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.
Tabla de Contenidos
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:
- 20 Comandos de YUM de Linux para gestión de paquetes
- 15 Ejemplos de Comandos APT en Ubuntu/Debian y Mint
- 45 Ejemplos de Comandos Zypper para Administrar Linux OpenSUSE
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/