Aller au contenu
Administration Linux medium

Télécharger des fichiers avec curl et wget

9 min de lecture

curl et wget sont les deux outils de téléchargement en ligne de commande présents sur quasiment tous les serveurs Linux. Installer un outil depuis un script, récupérer une release GitHub, tester une API REST, télécharger un dump de base de données — tout passe par l’un ou l’autre. Ce guide vous montre les gestes concrets pour les deux, et comment choisir entre eux.

  • Télécharger un fichier avec curl -L -O et avec wget
  • Reprendre un téléchargement interrompu avec wget -c et curl -C -
  • Utiliser le mode silencieux curl -fsSL dans les scripts
  • Récupérer l’URL de la dernière release GitHub dynamiquement
  • Passer des headers et des tokens d’authentification
  • Diagnostiquer une erreur HTTP avec curl -v ou --fail
  • Choisir entre curl et wget selon la situation
Capacitécurlwget
Téléchargement simple
Reprise automatique (-C -)Manuel avec -C -Automatique avec -c
Suivi de redirectionsManuel avec -LAutomatique
Téléchargement récursif (miroir web)
Requêtes REST (POST, PUT, DELETE)✅ excellentBasique
Lectures de pipes / stdin
Disponible sur macOS/Windows WSL✅ partoutPas toujours
Usage premierAPI, scripting, diagnosticTéléchargement simple, miroir

Règle pratique : wget pour télécharger simplement. curl pour les scripts, les APIs et le diagnostic.


Fenêtre de terminal
curl -L -O https://example.com/fichier.tar.gz
OptionRôle
-LSuivre les redirections HTTP (301/302) — presque toujours nécessaire
-OSauvegarder avec le nom de fichier de l’URL
-o nom.tar.gzSauvegarder sous un nom spécifique

Sans -L, curl s’arrête sur la première redirection et vous donne le corps de la réponse de redirection, pas le fichier.

Fenêtre de terminal
curl -L -O --progress-bar https://example.com/archive.tar.gz
Fenêtre de terminal
curl -fsSL https://example.com/install.sh | bash
OptionRôle
-fFail silently : retourne un code d’erreur si HTTP ≥ 400 (sinon curl affiche le corps d’erreur)
-sSilent : pas de barre de progression ni de statistiques
-SAfficher quand même les erreurs même en mode -s
-LSuivre les redirections
Fenêtre de terminal
curl -L -C - -O https://example.com/archive-10go.tar.gz

-C - demande à curl de détecter automatiquement la position de reprise dans le fichier existant.


Un cas d’usage courant dans les scripts d’installation :

Fenêtre de terminal
# Récupérer l'URL du dernier binaire Linux/amd64 de kubectl
RELEASE=$(curl -fsSL https://storage.googleapis.com/kubernetes-release/release/stable.txt)
curl -LO "https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/kubectl"

Avec l’API GitHub Releases :

Fenêtre de terminal
# Dernière version de jq
VERSION=$(curl -fsSL https://api.github.com/repos/jqlang/jq/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
curl -LO "https://github.com/jqlang/jq/releases/download/${VERSION}/jq-linux-amd64"

Fenêtre de terminal
curl -H "Accept: application/json" https://api.example.com/data
Fenêtre de terminal
curl -H "Authorization: Bearer ${API_TOKEN}" https://api.example.com/resource
Fenêtre de terminal
curl -u utilisateur:mot_de_passe https://nexus.example.com/repository/artifacts/

Fenêtre de terminal
# Voir les headers de la réponse
curl -I https://example.com/
# Mode verbose — headers requête ET réponse
curl -v https://example.com/
# Afficher seulement le code HTTP
curl -o /dev/null -s -w "%{http_code}\n" https://example.com/
200

Pour tester un endpoint d’API :

Fenêtre de terminal
# POST JSON et afficher la réponse formatée
curl -s -X POST \
-H "Content-Type: application/json" \
-d '{"key": "value"}' \
https://api.example.com/endpoint | jq .

Fenêtre de terminal
wget https://example.com/fichier.tar.gz

wget suit automatiquement les redirections et sauvegarde avec le nom original.

Fenêtre de terminal
wget -O mon-fichier.tar.gz https://example.com/release-1.0.tar.gz
Fenêtre de terminal
wget -q https://example.com/fichier.tar.gz
Fenêtre de terminal
wget -c https://example.com/archive-10go.tar.gz

-c (continue) reprend automatiquement là où le téléchargement s’est arrêté — plus simple qu’avec curl.

Fenêtre de terminal
wget --limit-rate=1m https://example.com/archive.tar.gz

wget peut aspirer un site web ou un répertoire FTP :

Fenêtre de terminal
# Télécharger récursivement un répertoire d'un site
wget -r -np -nH --cut-dirs=1 https://example.com/docs/
# -r : récursif
# -np : no-parent (ne pas remonter au niveau supérieur)
# -nH : pas de répertoire du hostname
# --cut-dirs=1 : supprimer le premier niveau de chemin /docs/

Fenêtre de terminal
# curl
curl -L -O https://example.com/archive.tar.gz
# wget
wget https://example.com/archive.tar.gz

Les deux produisent le même résultat. wget est légèrement plus court.


Après un téléchargement, vérifiez toujours l’intégrité du fichier si le site fournit un checksum :

Fenêtre de terminal
# Télécharger le fichier et son checksum
wget https://example.com/archive.tar.gz
wget https://example.com/archive.tar.gz.sha256
# Vérifier
sha256sum -c archive.tar.gz.sha256
archive.tar.gz: OK

Pour une vérification complète avec GPG, voir le guide Vérifier l’intégrité d’un fichier.


SymptômeCause probableSolution
curl: (60) SSL certificate problemCertificat non reconnucurl -k (insécure, à éviter) ou corriger les CA : apt install ca-certificates
wget: unable to resolve hostDNS non configuréping 8.8.8.8 pour tester la connectivité, cat /etc/resolv.conf
Code retour 0 malgré une erreur 404Pas de -f sur curlAjouter -f ou tester avec curl -o /dev/null -w "%{http_code}"
Téléchargement très lentBande passante limitée ou serveur saturéwget --limit-rate pour ne pas saturer le réseau local
wget: command not foundwget non installéapt install wget ou dnf install wget

  • curl -L -O et wget téléchargent un fichier — wget suit les redirections automatiquement, curl nécessite -L.
  • curl -fsSL est la combinaison standard pour les scripts d’installation : fail silently, no progress, follow redirects.
  • wget -c reprend un téléchargement interrompu plus simplement que curl -C -.
  • Toujours vérifier le checksum d’un fichier téléchargé avant de l’utiliser en production.
  • wget fait du récursif, curl sait faire des requêtes REST complexes.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn