Quand tu travailles sur Linux, il est courant d'avoir besoin de télécharger des fichiers depuis internet. Deux commandes rendent cela très simple : curl et wget. Chacune a ses forces, et tu apprendras à choisir laquelle utiliser selon la situation.
wget est idéal pour télécharger des fichiers de manière récursive ou en arrière-plan. Il reprend automatiquement un téléchargement interrompu et suit les redirections.
wget https://example.com/fichier.tar.gzLe fichier sera téléchargé et sauvegardé sous le même nom fichier.tar.gz.
wget -O mon-fichier.zip https://example.com/archive.zipL'option -O permet de spécifier le nom du fichier de sortie.
wget -c https://example.com/gros-fichier.isoSi le téléchargement est interrompu, -c reprend là où il s'est arrêté. Très utile pour les gros fichiers !
wget -b https://example.com/fichier.isoL'option -b lance le téléchargement en arrière-plan. Tu peux vérifier l'avancement avec :
tail -f wget-logwget --mirror -p --convert-links https://example.comCette commande télécharge récursivement tout un site web pour consultation hors ligne.
curl est plus puissant pour envoyer des données (POST, uploads) et pour visualiser les en-têtes HTTP. Il affiche aussi le résultat dans le terminal par défaut.
curl https://example.comLe contenu HTML s'affiche directement dans le terminal (sans sauvegarder).
curl -O https://example.com/fichier.tar.gzL'option -O (majuscule) sauvegarde le fichier sous son nom original.
curl -o mon-fichier.zip https://example.com/archive.zipL'option -o (minuscule) permet de choisir le nom de sortie.
curl -L https://example.com/page-redirecteeL'option -L suit automatiquement les redirections HTTP.
curl -u utilisateur:mdp https://example.com/fichier-protegeL'option -u permet de s'authentifier avec un nom d'utilisateur et mot de passe.
curl -X POST -d "nom=valeur" https://api.example.com/endpointcurl -X POST -d "param1=alpha" -d "param2=beta" https://api.example.com-X POST指定 la méthode et -d envoie les données.
curl -F "fichier=@photo.jpg" https://api.example.com/uploadL'option -F envoie un formulaire multipart (utile pour les uploads de fichiers).
curl -I https://example.comL'option -I affiche uniquement les en-têtes de la réponse.
curl -H "Authorization: Bearer token123" https://api.example.com/dataL'option -H permet d'ajouter des en-têtes personnalisés.
Pour envoyer ou recevoir des données JSON :
curl -H "Content-Type: application/json" \ -d '{"nom":"Alice","age":30}' \ https://api.example.com/users| Feature | wget | curl |
|---|---|---|
| Téléchargement basique | ✅ | ✅ |
| Reprise automatique | ✅ | ✅ |
| Téléchargement récursif | ✅ | ❌ |
| Envoi de données POST | ❌ | ✅ |
| Upload de fichiers | ❌ | ✅ |
| Affichage en terminal | ❌ | ✅ |
| Arrière-plan | ✅ | ✅ |
| Suivre liens (mirroring) | ✅ | ❌ |
wget --progress=bar https://example.com/fichier.isocurl -# -O https://example.com/fichier.zipwget -qO- https://example.com/archive.tar.gz | tar -xzcurl -sL https://example.com/fichier.zip -o /tmp/f.zip && unzip /tmp/f.zipPour ne pas saturer la bande passante :
wget --limit-rate=200k https://example.com/gros-fichier.isocurl --limit-rate 200k -O https://example.com/fichier.zipLa vitesse est limitée à 200 Ko/s dans ces exemples.
Avec curl et un peu de script, tu peux vérifier si une liste de liens fonctionne :
for url in $(cat liens.txt); do curl -s -o /dev/null -w "%{http_code} $url\n" "$url"; doneCela affiche le code HTTP de chaque lien dans liens.txt.
-O fichier : sauvegarder sous un nom différent-c : reprendre un téléchargement interrompu-b : lancer en arrière-plan-q : mode silencieux (sans messages)--limit-rate=X : limiter la vitesse de téléchargement--mirror : dupliquer un site entier-o fichier : sauvegarder sous un nom différent-O : sauvegarder sous le nom original-L : suivre les redirections-I : afficher uniquement les en-têtes-X POST : envoyer en méthode POST-d "data" : envoyer des données-F "fichier=@x" : upload de fichier-H "En-tête" : ajouter un en-tête personnalisé-u user:mdp : authentification--limit-rate X : limiter la vitessewget pour télécharger un fichier depuis une URL de ton choix.curl pour afficher le contenu HTML d'une page web.curl -I pour voir les en-têtes HTTP d'un site.wget -c et interrompt-le avec Ctrl+C, puis reprends-le avec la même commande.