Maitriser la commande wget
Mise à jour :
La commande wget
est un outil incontournable pour tous ceux qui travaillent
en ligne de commande sous Linux. Elle permet de télécharger facilement des
fichiers depuis Internet, que ce soit via HTTP, HTTPS ou FTP. Grâce à sa
simplicité d’utilisation et à sa robustesse, wget
s’impose comme la solution
idéale pour récupérer des fichiers, des pages web, ou même des sites entiers,
sans interface graphique.
Contrairement à curl
, qui excelle dans
l’interaction avec des APIs et la manipulation fine des requêtes HTTP, wget
se distingue par sa capacité à gérer des téléchargements complexes : reprise
automatique en cas d’interruption, téléchargement récursif de sites web, gestion
des authentifications, limitation de la bande passante, et bien plus encore.
Fonctionnalités de wget
La commande wget
se distingue par sa polyvalence et sa robustesse pour le
téléchargement de fichiers en ligne de commande. Voici les principales
fonctionnalités qui en font un outil incontournable :
- Support de plusieurs protocoles : HTTP, HTTPS et FTP.
- Téléchargement de fichiers simples ou multiples.
- Reprise automatique des téléchargements interrompus.
- Téléchargement récursif de sites web.
- Gestion de l’authentification et des cookies.
- Limitation de la bande passante.
- Téléchargement en arrière-plan.
- Support des proxies.
- Personnalisation des requêtes HTTP.
Grâce à ces fonctionnalités, wget s’adapte à tous les besoins, du téléchargement ponctuel à l’automatisation avancée dans des scripts.
Syntaxe de base
La commande wget
s’utilise principalement selon la structure suivante :
wget [options] URL
-
options
: Ce sont les différentes options que vous pouvez utiliser pour modifier le comportement dewget
(voir section suivante pour les options essentielles). -
URL
: C’est l’adresse du fichier ou du site web que vous souhaitez télécharger.
Télécharger un seul fichier
Pour récupérer un fichier unique et l’enregistrer dans le répertoire courant, il suffit de taper :
wget https://exemple.com/fichier.zip
Chaque fichier est nommé d’après la dernière partie de l’URL (ici
fichier.zip
).
Si vous préférez spécifier un nom local différent, utilisez l’option -O
:
wget -O mon_téléchargement.zip https://exemple.com/fichier.zip
Cette syntaxe enregistre la ressource sous le nom mon_téléchargement.zip
.
Téléchargement silencieux pour les scripts
En contexte automatisé, il est souvent préférable de supprimer la sortie verbeuse ou de limiter les messages d’erreur :
-q
ou--quiet
: mode totalement silencieux.-nv
ou--no-verbose
: désactive la barre de progression et les détails, mais affiche tout de même les erreurs c
Exemple :
wget -q -O fichier.txt https://exemple.com/data.txt
En cas d’échec HTTP (code ≥ 400), utilisez --server-response
ou combinez avec
--show-progress
pour obtenir juste le strict nécessaire.
Pour exécuter le téléchargement en tâche de fond tout en continuant à recevoir un log, on peut combiner :
wget -b -o log_wget.txt https://exemple.com/grand_fichier.iso
Le téléchargement se poursuit en arrière-plan et le détail est écrit dans
log_wget.txt
.
Spécifier un timeout
Pour éviter de bloquer indéfiniment un script si le serveur ne répond pas,
wget
propose plusieurs temps d’attente.
L’option --timeout=SEC
fixe un délai global d’attente du serveur (en secondes)
avant d’abandonner la connexion :
wget --timeout=30 https://exemple.com/ressource
Si aucune donnée n’a été reçue en 30 s, wget
interrompt la connexion.
--dns-timeout=SEC
: délai maximal pour la résolution DNS.--connect-timeout=SEC
: délai maximal pour établir la connexion TCP.
Exemple :
wget --dns-timeout=10 --connect-timeout=15 https://exemple.com/fichier.tar.gz
Nombre de tentatives
Par défaut, wget
réessaie 20 fois en cas de coupure ; pour modifier ce
comportement, ajustez --tries
:
wget --tries=5 https://exemple.com/data.csv
Ici, wget
tentera au maximum 5 connexions avant d’abandonner.
Reprise automatique
Enfin, pour reprendre un téléchargement interrompu, utilisez -c
:
wget -c https://exemple.com/film.mkv
L’option -c
détecte la taille déjà reçue et continue la récupération à partir
de cet octet.
Télécharger plusieurs fichiers
Lorsque vous devez récupérer en une seule commande un ensemble de ressources,
wget
propose plusieurs méthodes pour automatiser ces téléchargements, que ce
soit via un fichier de liste, des motifs sur les URLs ou simplement une boucle
shell.
Utiliser un fichier de liste d’URLs
L’option -i
permet de traiter un fichier texte contenant une URL par ligne :
wget -i urls.txt
-
Format de
urls.txt
Chaque ligne du fichier doit contenir une URL complète, sans espace ni commentaire ; par exemple :https://exemple.com/photo1.jpghttps://exemple.com/doc.pdfhttps://exemple.com/archive.tar.gz -
Logs et renommage Pour garder une trace des téléchargements et renommer certains fichiers, on peut combiner :
Terminal window wget -i urls.txt -O nom_personnalisé # renomme tout en même nom, à éviterwget -i urls.txt -o urls.log # journalise l’activité dans urls.log -
Reprise en cas d’interruption Ajoutez
-c
pour reprendre les fichiers interrompus :Terminal window wget -c -i urls.txt
Globbing et motifs d’URLs
wget
dispose d’un globbing simple qui permet de générer plusieurs URLs à
partir d’un motif :
wget https://serveur/exemples/file[1-5].txt
-
Séquences Le motif
[1-5]
génèrefile1.txt
,file2.txt
, …,file5.txt
. -
Zéros en tête Pour produire
file01.txt
àfile10.txt
:Terminal window wget https://serveur/data/img[01-10].png -
Listes personnalisées On peut combiner plusieurs blocs :
Terminal window wget https://site/chapitre[1-3]-section[a-c].htmlproduit
chapitre1-sectiona.html
,chapitre1-sectionb.html
, etc.
Attention : le globbing se limite aux crochets
[]
et ne supporte pas les jokers*
comme dans le shell.
Boucles Shell
Pour plus de flexibilité, les boucles Bash permettent d’itérer sur une collection d’URLs ou de suffixes :
for n in {1..20}; do wget "https://exemple.com/vidéo_part${n}.mp4"done
-
Lecture depuis un fichier :
Terminal window for url in $(<urls.txt); dowget "$url"done -
Renommage automatique :
Terminal window count=1for url in $(<urls.txt); dowget -O "fichier_${count}.dat" "$url"((count++))done -
Exécution parallèle Attention,
wget
n’est pas nativement parallèle ; vous pouvez lancer plusieurs instances en arrière-plan :Terminal window for url in $(<urls.txt); dowget "$url" &donewait
Télécharger un site complet (mode récursif)
Pour cloner ou sauvegarder l’intégralité d’un site web, wget
propose un mode
récursif puissant et très configurable. Ce chapitre détaille les options clés
pour contrôler la profondeur, les domaines autorisés, les types de fichiers à
inclure ou exclure, et le mirroring “prêt-à-l’emploi”.
Activation du mode récursif
-
Option
-r
Active le téléchargement récursif :wget -r https://exemple.com
-
Option
-m
(mirror) Combine plusieurs paramètres pour un mirroring “tout-en-un” :Terminal window wget -m https://exemple.comÉquivaut à
-r -N -l inf --no-remove-listing
— suit indéfiniment la profondeur (l inf
), conserve les fichiers à jour (-N
) et ne supprime pas les fichiers.listing
.
Contrôler la profondeur
-
Option
-l N
Définit le niveau de profondeur maximal (par défaut 5) :Terminal window wget -r -l 2 https://exemple.comIci,
wget
suit les liens vers deux niveaux au maximum. -
Profondeur infinie Avec
-l inf
(ou dans le mode mirror), tous les niveaux sont explorés jusqu’à épuisement des pages accessibles.
Restreindre aux mêmes domaines
Pour éviter d’aller chercher des ressources hors du site principal :
-
Option
-D domaine1,domaine2
Limite le téléchargement aux domaines listés :Terminal window wget -r -D exemple.com,cdn.exemple.com https://exemple.com -
Option
--span-hosts
Autorise la traversée vers d’autres hôtes si nécessaire, en combinaison avec-D
. -
Option
--exclude-domains
Exclut certains domaines explicitement :Terminal window wget -r --exclude-domains pub.tracking.com https://exemple.com
Inclure ou exclure certains fichiers
Pour affiner ce qui est téléchargé :
-
Option
--accept
/--reject
Spécifie des motifs de noms de fichiers :Terminal window wget -r --accept jpg,png,html https://exemple.comNe récupère que les images et pages HTML.
-
Option
--accept-regex
/--reject-regex
Permet des filtres basés sur des expressions régulières :Terminal window wget -r --reject-regex ".*\?sessionid=.*" https://exemple.com
Options complémentaires pour le mirroring
-
Conserver la structure des répertoires Par défaut,
wget -r
recrée l’arborescence du site dans votre dossier local. -
Mettre à jour les fichiers existants Avec
-N
, n’écrase que si la copie distante est plus récente. -
Générer un index HTML local Option
--convert-links
convertit tous les liens pour qu’ils pointent vers les fichiers locaux :Terminal window wget -m --convert-links https://exemple.com -
Limiter la vitesse Utilisez
--limit-rate
pour ne pas saturer votre connexion, même en mode mirror.
Gestion des redirections et authentifications
Pour accéder à des ressources protégées ou dont l’URL finale diffère de l’URL
initiale, wget
fournit plusieurs options pour suivre les redirections HTTP et
pour gérer divers mécanismes d’authentification.
Suivre les redirections HTTP
Lorsqu’une URL renvoie un code 3xx, wget
peut automatiquement suivre vers
l’emplacement final :
wget --max-redirect=20 https://exemple.com/ancien-lien
--max-redirect=N
: nombre maximal de redirections autorisées (par défaut 20).--trust-server-names
: renomme automatiquement le fichier de sortie selon le nom fourni par le serveur à la dernière redirection.
Ces options permettent d’éviter les erreurs “404” ou “301 Moved Permanently” non suivies et garantissent que vous récupérez le contenu réel.
Authentification HTTP Basic et Digest
Pour accéder à des pages protégées par authentification basique ou digest, deux paires d’options sont disponibles :
wget --http-user=utilisateur --http-password=motdepasse https://exemple.com/zone-securisee
--http-user=USER
et--http-password=PASS
: authentification HTTP Basic.--auth-no-challenge
: envoie les identifiants sans attendre une invitation du serveur (utile pour certains serveurs mal configurés).--http-auth-method=[basic|digest]
: force l’usage de Basic ou Digest selon le besoin.
Authentification par cookies
Pour simuler une session de navigateur, conserver ou réutiliser des cookies :
wget --save-cookies cookies.txt --keep-session-cookies --post-data="user=Alice&pass=1234" https://exemple.com/loginwget --load-cookies cookies.txt https://exemple.com/ma-page
--save-cookies FICHIER
: enregistre les cookies reçus dans un fichier.--keep-session-cookies
: inclut aussi les cookies de session dans le fichier (par défaut, seuls les cookies persistants sont sauvés).--load-cookies FICHIER
: recharge les cookies préalablement sauvegardés pour les envoyer avec la requête.
Cette méthode est très utile pour automatiser l’accès à des zones nécessitant une connexion préalable.
Authentification par en-tête personnalisé (tokens)
Certaines API ou applications web utilisent des tokens Bearer ou d’autres mécanismes d’en-tête :
wget --header="Authorization: Bearer MON_JETON" https://api.exemple.com/ressources
--header="Clé: Valeur"
: ajoute un en-tête HTTP personnalisé.- Vous pouvez spécifier plusieurs fois
--header
pour inclure aussiContent-Type
,Accept
, etc.
Authentification FTP/FTPS
Pour les transferts de fichiers via FTP ou FTPS, wget
gère aussi
l’authentification :
wget --ftp-user=ftpuser --ftp-password=ftppass ftp://ftp.exemple.com/dossier/fichier.txt
--ftp-user=USER
et--ftp-password=PASS
: identifiants pour FTP ou FTPS.- Pour un serveur FTPS explicite (FTP sur SSL/TLS), utilisez l’URL commençant
par
ftps://
.
Cette flexibilité fait de wget
un outil universel pour accéder à quasiment
tous les services web ou FTP protégés.
Proxys et configurations réseau
Lorsqu’un accès direct à Internet n’est pas possible ou que vous souhaitez
acheminer vos téléchargements via un serveur intermédiaire, wget
met à
disposition plusieurs options pour configurer et utiliser des proxies, ainsi que
pour ajuster les résolutions DNS et le comportement IPv4/IPv6.
Passer par un proxy HTTP/HTTPS
-
Définir le proxy via variables d’environnement
Terminal window export http_proxy="http://user:pass@proxy.exemple.com:3128/"export https_proxy="http://user:pass@proxy.exemple.com:3128/"wget https://exemple.com/fichier.txtLes variables
http_proxy
ethttps_proxy
sont automatiquement prises en compte parwget
. -
Options en ligne de commande
Terminal window wget --proxy-user=utilisateur --proxy-password=motdepasse \--execute="http_proxy = http://proxy.exemple.com:3128" \https://exemple.com/data.csvPermet de spécifier les identifiants et l’hôte du proxy sans toucher aux variables d’environnement.
Désactiver l’usage du proxy
Pour une requête particulière, si vous souhaitez ignorer le proxy configuré :
wget --no-proxy https://exemple.com/ressource
Cette option force wget
à établir une connexion directe.
Forcer IPv4 ou IPv6
Sur des réseaux mixtes, il peut être nécessaire de contraindre la famille d’adresses IP utilisée :
-
Forcer IPv4
Terminal window wget -4 https://exemple.com/fichier.img -
Forcer IPv6
Terminal window wget -6 https://exemple.com/fichier.img
Ces options peuvent résoudre des problèmes de connectivité liés à certaines configurations DNS.
Utiliser un fichier de configuration .wgetrc
Pour conserver vos réglages de proxy et de timeouts sans répéter les options,
vous pouvez créer un fichier de configuration personnel nommé .wgetrc
dans
votre répertoire personnel. Ce fichier permet de définir des valeurs par défaut
pour toutes vos commandes wget
, ce qui est particulièrement utile pour les
environnements automatisés ou les scripts.
Exemple de fichier .wgetrc
:
http_proxy = http://proxy.exemple.com:3128/https_proxy = http://proxy.exemple.com:3128/no_proxy = localhost,127.0.0.1dns_timeout = 5connect_timeout = 10read_timeout = 20
Ainsi, chaque appel à wget
appliquera ces valeurs par défaut, simplifiant vos
scripts et commandes ad hoc.
Utilisation avancée
Au-delà des téléchargements basiques et des modes miroir, wget
propose des
fonctionnalités avancées qui facilitent l’intégration dans des scripts
complexes, l’automatisation conditionnelle, et le contrôle fin du comportement
réseau.
Modification du User-Agent
Certains serveurs adaptent leur réponse en fonction du client identifié. Pour forcer un User-Agent précis :
wget --user-agent="Mozilla/5.0 (compatible; MonScraper/1.0)" \ https://exemple.com/page
Cela peut être utile pour contourner des filtrages basés sur le User-Agent ou tester la réactivité du serveur à différents navigateurs.
Exécution de commandes après téléchargement
Grâce à l’option --execute
ou à la combinaison avec un script shell, vous
pouvez enchaîner automatiquement des actions post-téléchargement :
wget https://exemple.com/data.csv && \csvtool readable data.csv > data_pretty.txt
Ou dans .wgetrc
:
execute = chmod 644 # applique le chmod sur les fichiers récupérés
Limitation de bande passante et quotas
Pour protéger votre réseau ou respecter des plafonds, --limit-rate
restreint
le débit :
wget --limit-rate=200k https://exemple.com/video.mp4
Vous pouvez également définir un nombre maximal de téléchargements simultanés dans un script via un contrôle de boucle.
Utilisation conditionnelle et scripts d’automatisation
En combinant wget
avec des tests shell, vous pouvez réaliser des boucles de
vérification et de téléchargement :
while true; do wget -N https://exemple.com/rapport_quotidien.pdf sleep 86400 # attend 24 hdone
Ou surveiller un fichier Last-Modified
:
if wget --spider --server-response https://exemple.com/page 2>&1 \ | grep -q "Last-Modified: .*2025"; then wget https://exemple.com/page -O nouvelle.htmlfi
Ressources complémentaires
Contrôle de connaissances
Pourquoi ce contrôle ?
Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.
🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.
🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.
💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.
Bonne chance ! 🚀
Conclusion
En résumé, wget
offre une solution fiable et non interactive pour télécharger
des fichiers via HTTP, HTTPS et FTP, en supportant la reprise automatique et
l’exécution en arrière-plan. Sa capacité de téléchargement récursif et de
mirroring de sites entiers en fait un outil incontournable pour copier et
synchroniser des contenus web. Léger, portable et facilement scriptable, wget
s’intègre naturellement dans les chaînes d’automatisation et les environnements
serveur pour simplifier les tâches de récupération et de sauvegarde de données.