Téléchargement de plusieurs fichiers à partir d'une liste
Dans les scénarios réels, vous avez souvent besoin de télécharger plusieurs fichiers. Taper manuellement chaque commande wget
serait inefficace. Heureusement, wget
peut télécharger plusieurs fichiers à partir d'une liste, ce qui est parfait pour l'automatisation.
Création d'un fichier contenant les URLs
Tout d'abord, créons un fichier texte contenant les URLs des fichiers que nous souhaitons télécharger :
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
Dans ces commandes :
- La première commande
echo
crée un nouveau fichier appelé download_list.txt
et ajoute la première URL
- Les commandes
echo
suivantes ajoutent des URLs supplémentaires au fichier en utilisant >>
(double redirection)
Vérifions le contenu de notre fichier pour nous assurer qu'il est correct :
cat download_list.txt
Vous devriez voir trois URLs, chacune sur sa propre ligne :
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
Utilisation de wget avec un fichier d'entrée
Maintenant, nous pouvons utiliser l'option -i
avec wget
pour lire les URLs de notre fichier et télécharger tous les fichiers :
wget -i download_list.txt
Cette commande indique à wget
de lire les URLs de download_list.txt
et de télécharger chaque fichier séquentiellement. Vous verrez une sortie pour chaque téléchargement, similaire à celle obtenue lors du téléchargement d'un seul fichier :
--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
...
Vérification des fichiers téléchargés
Une fois les téléchargements terminés, vérifions que tous les fichiers ont été téléchargés correctement :
ls -lh Python-3.7.*
Vous devriez voir les trois fichiers Python 3.7.x que nous avons téléchargés à partir de la liste :
-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
Création d'un script de téléchargement par lot
Pour une utilisation future, créons un simple script shell qui peut télécharger des fichiers à partir d'une liste. Cela montre comment wget
peut être utilisé dans l'automatisation :
cd ~/project/download_resources
nano batch_download.sh
Entrez le contenu suivant dans le fichier :
#!/bin/bash
## Un simple script pour télécharger des fichiers à partir d'une liste
if [ -f "$1" ]; then
echo "Téléchargement des fichiers à partir de la liste : $1"
wget -i "$1"
else
echo "Erreur : Le fichier $1 n'a pas été trouvé"
exit 1
fi
Enregistrez le fichier en appuyant sur Ctrl+O
, puis Entrée
, et quittez avec Ctrl+X
.
Rendez le script exécutable :
chmod +x batch_download.sh
Maintenant, vous pouvez utiliser ce script pour télécharger des fichiers à partir de n'importe quelle liste à l'avenir :
./batch_download.sh download_list.txt
Cette commande ferait la même chose que notre précédente commande wget -i download_list.txt
, mais elle est encapsulée dans un script que vous pouvez réutiliser.