
Quand on doit télécharger un fichier depuis un terminal ou automatiser des téléchargements — qu’il s’agisse d’images, d’archives, de rapports ou de scripts — l’outil cURL est extrêmement pratique. Il offre un contrôle fin, une flexibilité importante, et des options variées selon les besoins (redirections, authentification, limitation de bande passante, proxy, etc.). Cet article passe en revue les usages de base, les techniques avancées, des exemples concrets, et les bonnes pratiques pour tirer le meilleur parti de cURL.
Les bases : comment télécharger un fichier avec cURL
La commande la plus simple pour télécharger un fichier avec cURL est la suivante :
curl -O <URL_du_fichier>
Le flag -O (ou --remote-name) indique à cURL de sauvegarder le fichier avec le nom d’origine tel qu’il apparaît dans l’URL. Par exemple :
curl -O https://example.com/archive.zip
Télécharge archive.zip dans le répertoire courant. Si vous préférez donner un nom différent au fichier local, utilisez le flag -o :
curl -o monfichier.zip https://example.com/archive.zip
Ici, le fichier sera enregistré sous le nom monfichier.zip.
Exemple chiffré
Imaginons que vous devez télécharger un fichier de 25 Mo. Avec cURL, la barre de progression s’affichera, et le temps dépend de votre débit. Sur une connexion à 5 Mbit/s (≈ 625 ko/s), cela prendra environ 40 secondes — un téléchargement rapide sans interface graphique.
cURL est particulièrement intéressant dans un environnement serveur ou scripté, lorsqu’il n’y a pas d’interface graphique ou de gestionnaire de téléchargement.
Scénarios courants et options utiles
a) Suivre les redirections
Certaines URLs redirigent vers d’autres adresses (HTTP 301 / 302). Par défaut, cURL ne suit pas ces redirections. Vous devez ajouter l’option -L :
curl -O -L "https://exemple.com/redirect/fichier.pdf"
Cela garantit que vous finissez sur la bonne URL finale avant de télécharger.
b) Authentification HTTP ou FTP
Pour des fichiers protégés, accessibles via un login/mot de passe, cURL permet de spécifier les identifiants :
curl -u utilisateur:motdepasse -O https://example.com/secret.zip
cURL demandera le mot de passe si vous ne le fournissez pas, ou utilisera directement les identifiants fournis.
c) Limiter la vitesse de téléchargement
Dans certains contextes (serveur fragile, partage de bande passante), il peut être utile de limiter le débit. L’option --limit-rate permet de le faire :
curl -O --limit-rate 100k https://example.com/video.mp4
Cette commande impose une vitesse maximale de téléchargement de 100 Ko/s, évitant de saturer la connexion.
Pratique si vous automatisez un script de téléchargement sur un serveur avec d’autres services critiques.
d) Télécharger plusieurs fichiers à la fois
cURL autorise le téléchargement multiple en répétant l’option -O :
curl -O https://example.com/file1.jpg -O https://example.com/file2.jpg -O https://example.com/file3.jpg
Ou, pour des fichiers numérotés :
curl -O https://example.com/images/photo[1-5].jpg
Cela téléchargera photo1.jpg à photo5.jpg. Très utile pour récupérer des séries d’images, des séries de rapports, ou des lots de fichiers structurés.
e) Reprendre un téléchargement interrompu
Si une connexion coupe en plein téléchargement d’un gros fichier, cURL peut reprendre là où il s’était arrêté (si le serveur supporte). Avec :
curl -C - -O https://example.com/largefile.zip
Le flag -C - indique de reprendre. Cela évite de recommencer depuis zéro pour un fichier de plusieurs centaines de Mo ou Go.
Comparaison cURL vs Wget : quand utiliser quoi
| Fonctionnalité / Usage | cURL | Wget |
|---|---|---|
| Télécharger un seul fichier | Oui | Oui |
| Télécharger plusieurs fichiers (manuellement listés) | Oui | Oui |
| Téléchargement récursif (site + sous-dossiers) | Non natif | Oui |
| Contrôle fin des headers, méthodes HTTP, proxy SOCKS | Oui | Moins flexible |
| Reprise de téléchargement interrompu | Oui (–C -) | Oui (–continue) |
| Limiter la vitesse / bande passante | Oui | Oui |
| Authentification HTTP / FTP | Oui | Oui |
| Script & automatisation (API, POST, envoi de données) | Très bien adapté | Moins flexible |
| Idéal pour web scraping ou appels API | ✅ | ▲ |
- Wget est pratique pour télécharger un site entier, ou des pages multiples de façon récursive.
- cURL est plus adapté pour des tâches fines, des appels API, des téléchargements uniques ou scriptés, ou quand vous avez besoin de contrôler les entêtes, l’authentification, les proxys, etc.
Exemples réels d’utilisation
Exemple 1 : Download d’une image dans un script
#!/bin/bash
url="https://example.com/logo.png"
curl -O "$url"
Script simple, rapide, sans interface graphique.
Exemple 2 : Téléchargement sécurisé avec authentification
curl -u user:SecretP4ssw0rd -O "https://example.com/secure/doc.pdf"
Utile pour récupérer des rapports, backups, fichiers protégés.
Exemple 3 : Batch download d’assets
curl -O https://example.com/data/file1.csv \
-O https://example.com/data/file2.csv \
-O https://example.com/data/file3.csv
Idéal pour scripts d’import, migrations, scraping de données structurées.
Exemple 4 : Limiter la bande passante
curl -O --limit-rate 200k "https://example.com/video_hd.mp4"
Pratique sur serveur partagé, ou pour ne pas saturer la connexion.
Bonnes pratiques & pièges à connaître
- Toujours entourer l’URL de guillemets, surtout si elle contient des caractères spéciaux ou des espaces.
- Si l’URL redirige, utiliser
-Lpour suivre. - Pour les fichiers sensibles ou via HTTPS, vérifier les certificats SSL/TLS — éviter
--insecureen production sauf en confiance absolue. - Gérer les noms de fichiers avec soin : si l’URL ne contient pas de nom valide, cURL génère
curl_response— mieux vaut utiliser-opour nom personnalisé. - Si vous téléchargez beaucoup de fichiers, surveiller l’usage de bande passante et la charge serveur.
- Pour des scripts, vérifier le code retour (exit code) pour détecter les échecs de téléchargement.
Cas d’usage concrets et chiffrés
- Backup automatique : un script cron qui télécharge chaque jour une archive (10–50 Mo). cURL est parfaitement adapté, permet une intégration facile, silencieuse et fiable.
- Collecte de médias : télécharger 500 images depuis un site — en 5 minutes avec cURL, là où un clic manuel prendrait des heures.
- Chargement de gros fichiers : récupérer un fichier de 2 Go via cURL avec reprise en cas d’interruption — gain de temps et réduction de la frustration.
- Automatisation dans un pipeline CI/CD : téléchargement de dépendances, assets, rapports ou snapshots — cURL s’intègre dans les scripts d’installation.
À retenir
cURL est un outil extrêmement puissant, polyvalent et léger pour télécharger des fichiers, que ce soit pour un usage ponctuel, automatisé, scripté ou intensif. Grâce à ses nombreuses options — sortie de fichier, suivi des redirections, limitation de bande passante, authentification, proxy — il s’adapte à de nombreux contextes.
Quand vous devez automatiser des téléchargements, gérer des backups, scraper des données, ou simplement récupérer un fichier depuis le terminal, cURL est un allié de choix. Apprendre à bien utiliser ses options de base et avancées vous fera gagner du temps, de la flexibilité, et vous mettra en position de confiance face aux besoins futurs.
FAQ
Q1 : cURL est-il meilleur que Wget pour tout type de téléchargement ?
Non. cURL est plus flexible et programmable, idéal pour des téléchargements simples, des API ou des scripts. Wget reste plus efficace pour du téléchargement récursif ou des sites entiers.
Q2 : Peut-on télécharger plusieurs fichiers en parallèle avec cURL ?
Pas directement en parallèle dans une seule commande, mais on peut lancer plusieurs processus cURL simultanément (background, script bash, xargs, etc.) pour paralléliser.
Q3 : Que faire si le téléchargement échoue ou se coupe ?
Utiliser -C - -O pour reprendre le téléchargement — si le serveur le supporte. Sinon, relancer après correction (URL/connexion).
Q4 : cURL fonctionne-t-il sous Windows ?
Oui. Sur Windows, l’exécutable s’appelle souvent curl.exe. Il fonctionne de la même façon que sous Linux/macOS.
Q5 : Peut-on utiliser un proxy avec cURL pour télécharger un fichier ?
Oui. Avec l’option -x ou --proxy. Utile pour passer par un proxy HTTP, HTTPS ou SOCKS, ce qui peut aider pour contourner des restrictions ou anonymiser la requête.
