Descarga de múltiples archivos desde una lista
En escenarios del mundo real, a menudo es necesario descargar múltiples archivos. Escribir manualmente cada comando wget sería ineficiente. Afortunadamente, wget puede descargar múltiples archivos desde una lista, lo cual es perfecto para la automatización.
Creación de un archivo con URLs
Primero, creemos un archivo de texto que contenga las URLs de los archivos que queremos descargar:
cd ~/project/download_resources
echo "https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz" > download_list.txt
echo "https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz" >> download_list.txt
echo "https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz" >> download_list.txt
En estos comandos:
- El primer comando
echo crea un nuevo archivo llamado download_list.txt y agrega la primera URL.
- Los comandos
echo subsiguientes agregan URLs adicionales al archivo utilizando >> (doble redirección).
Verifiquemos el contenido de nuestro archivo para asegurarnos de que sea correcto:
cat download_list.txt
Deberías ver tres URLs, cada una en su propia línea:
https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
Uso de wget con un archivo de entrada
Ahora podemos usar la opción -i con wget para leer las URLs de nuestro archivo y descargar todos los archivos:
wget -i download_list.txt
Este comando le dice a wget que lea las URLs de download_list.txt y descargue cada archivo en secuencia. Verás una salida para cada descarga, similar a cuando descargaste un solo archivo:
--2024-01-10 10:30:51-- https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
Resolving www.python.org (www.python.org)... 151.101.76.223, 2a04:4e42:12::223
Connecting to www.python.org (www.python.org)|151.101.76.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22808518 (22M) [application/octet-stream]
Saving to: 'Python-3.7.0.tgz'
Python-3.7.0.tgz 100%[=============================================================>] 21.75M 25.9MB/s in 0.8s
2024-01-10 10:30:52 (25.9 MB/s) - 'Python-3.7.0.tgz' saved [22808518/22808518]
--2024-01-10 10:30:52-- https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
...
Verificación de archivos descargados
Después de que se completen las descargas, verifiquemos que todos los archivos se hayan descargado correctamente:
ls -lh Python-3.7.*
Deberías ver los tres archivos de Python 3.7.x que descargamos de la lista:
-rw-r--r-- 1 labex labex 22M Jan 10 10:30 Python-3.7.0.tgz
-rw-r--r-- 1 labex labex 22M Jan 10 10:30 Python-3.7.1.tgz
-rw-r--r-- 1 labex labex 22M Jan 10 10:31 Python-3.7.2.tgz
Creación de un script de descarga por lotes
Para uso futuro, creemos un simple script de shell que pueda descargar archivos desde una lista. Esto demuestra cómo se puede usar wget en la automatización:
cd ~/project/download_resources
nano batch_download.sh
Ingresa el siguiente contenido en el archivo:
#!/bin/bash
## A simple script to download files from a list
if [ -f "$1" ]; then
echo "Downloading files from list: $1"
wget -i "$1"
else
echo "Error: File $1 not found"
exit 1
fi
Guarda el archivo presionando Ctrl+O, luego Enter, y sal con Ctrl+X.
Haz el script ejecutable:
chmod +x batch_download.sh
Ahora puedes usar este script para descargar archivos de cualquier lista en el futuro:
./batch_download.sh download_list.txt
Este comando haría lo mismo que nuestro anterior comando wget -i download_list.txt, pero está envuelto en un script que puedes reutilizar.