Le téléchargement de contenu à partir de serveurs distants est une tâche courante pour les administrateurs et les développeurs. Bien qu’il existe de nombreux outils pour cette tâche, cURL se distingue par sa flexibilité et sa simplicité. Il s’agit d’un utilitaire en ligne de commande qui prend en charge des protocoles tels que HTTP, HTTPS, FTP et SFTP, ce qui le rend essentiel pour l’automatisation, les scripts et les transferts de fichiers efficaces.
Vous pouvez exécuter cURL directement sur votre ordinateur pour récupérer des fichiers. Vous pouvez également l’intégrer dans des scripts afin de simplifier la gestion des données, réduisant ainsi les efforts manuels et les erreurs. Ce guide présente plusieurs méthodes pour télécharger des fichiers avec cURL. En suivant ces exemples, vous apprendrez à gérer les redirections, renommer des fichiers et surveiller la progression des téléchargements. À la fin, vous devriez être en mesure d’utiliser cURL en toute confiance pour des tâches sur des serveurs ou dans des environnements cloud.
La commande curl fonctionne avec plusieurs protocoles, mais elle est principalement utilisée avec HTTP et HTTPS pour se connecter à des serveurs web. Elle peut également interagir avec des serveurs FTP ou SFTP si nécessaire.
Par défaut, cURL récupère une ressource à partir d’une URL spécifiée et l’affiche dans votre terminal (sortie standard). Cela est souvent utile pour prévisualiser le contenu d’un fichier sans le sauvegarder, en particulier s’il s’agit d’un petit fichier texte.
Exemple : pour afficher le contenu d’un fichier texte hébergé sur https://example.com/file.txt, exécutez :
curl https://example.com/file.txt
Pour les documents texte courts, cette méthode est suffisante. Cependant, les fichiers volumineux ou binaires peuvent saturer l’écran de données illisibles, vous préférerez donc généralement les enregistrer.
Souvent, l’objectif principal est d’enregistrer le fichier téléchargé sur votre machine locale plutôt que de l’afficher dans le terminal. cURL simplifie cela avec l’option -O (O majuscule), qui conserve le nom d’origine du fichier distant.
curl -O https://example.com/file.txt
Cela récupère file.txt et le sauvegarde dans le répertoire actuel sous le même nom. Cette méthode est rapide et conserve le nom de fichier existant, ce qui peut être utile si le nom a une signification particulière.
Parfois, il est important de renommer le fichier téléchargé pour éviter les conflits ou créer une convention de nommage claire. Dans ce cas, utilisez l’option -o (o minuscule) :
curl -o myfile.txt https://example.com/file.txt
Ici, cURL télécharge le fichier distant file.txt mais le sauvegarde localement sous monfichier.txt. Cela aide à garder les fichiers organisés ou à éviter les écrasements accidentels. C’est particulièrement utile dans les scripts nécessitant des noms de fichiers descriptifs.
Lorsqu’un fichier est demandé, les serveurs peuvent indiquer à votre client d’aller à une autre URL. Comprendre et gérer les redirections est essentiel pour réussir un téléchargement.
Les redirections sont souvent utilisées sur les sites web réorganisés, les fichiers déplacés ou les liens miroir. Sans gestion des redirections, cURL s’arrête après avoir reçu une réponse « déplacé », et vous n’obtiendrez pas le fichier.
Pour demander à cURL de suivre une chaîne de redirections jusqu’à la destination finale, utilisez -L (ou --location) :
curl -L -O https://example.com/redirected-file.jpg
Cela permet à cURL de récupérer le bon fichier même si l’URL initiale pointe ailleurs. Si vous omettez -L, cURL affichera simplement le message de redirection et s’arrêtera, ce qui peut poser problème sur les sites comportant plusieurs redirections.
cURL peut également gérer plusieurs téléchargements simultanément, vous évitant ainsi d’exécuter la commande plusieurs fois.
Si les noms de fichiers partagent un schéma commun, les accolades {} vous permettent de spécifier chaque nom de manière concise :
curl -O https://example.com/files/{file1.jpg,file2.jpg,file3.jpg}
cURL télécharge chaque fichier à la suite, ce qui est pratique pour les processus automatisés.
Pour une série de fichiers numérotés ou étiquetés alphabétiquement, spécifiez une plage entre crochets :
curl -O https://example.com/files/file[1-5].jpg
cURL parcourt automatiquement les fichiers file1.jpg à file5.jpg. C’est idéal pour les séquences de fichiers nommés de manière cohérente.
Si vous avez différentes URLs pour chaque fichier, vous pouvez les enchaîner :
curl -O https://example1.com/file1.jpg -O https://example2.com/file2.jpg
Cette méthode télécharge file1.jpg du premier site et file2.jpg du second, sans avoir à exécuter plusieurs commandes.
Dans certaines situations, vous pouvez vouloir contrôler la vitesse de téléchargement ou empêcher cURL d’attendre trop longtemps une réponse d’un serveur inactif.
Pour éviter de surcharger votre réseau ou simuler des conditions lentes, limitez la vitesse de téléchargement avec --limit-rate :
curl --limit-rate 2M -O https://example.com/bigfile.zip
2M signifie 2 mégaoctets par seconde. Vous pouvez également utiliser K pour kilooctets ou G pour gigaoctets.
Si un serveur est trop lent, vous pouvez demander à cURL d’arrêter après un certain temps. L’option --max-time fait exactement cela :
curl --max-time 60 -O https://example.com/file.iso
Ici, cURL s’arrête après 60 secondes, ce qui est utile pour les scripts nécessitant une gestion rapide des échecs.
cURL peut ajuster sa sortie pour afficher un minimum d’informations ou des détails complets.
Pour les tâches automatiques ou les cron jobs où vous n’avez pas besoin de barres de progression, utilisez -s (ou --silent) :
curl -s -O https://example.com/file.jpg
Cela masque la progression et les erreurs, ce qui rend les journaux plus propres. Cependant, le débogage devient plus difficile en cas d’échec silencieux.
À l’inverse, -v (ou --verbose) affiche des informations détaillées sur les requêtes et réponses :
curl -v https://example.com
La sortie verbeuse est précieuse pour diagnostiquer des problèmes tels que des certificats SSL invalides ou des redirections incorrectes.
Certains téléchargements nécessitent des identifiants ou une connexion sécurisée.
Lorsqu’un serveur exige un nom d’utilisateur et un mot de passe, utilisez -u :
curl -u username:password -O https://example.com/protected/file.jpg
L’insertion directe des identifiants peut être risquée, car ils peuvent apparaître dans les journaux ou les listes de processus. Envisagez d’utiliser des variables d’environnement ou des fichiers .netrc pour un traitement plus sûr.
Par défaut, cURL vérifie les certificats SSL. Si le certificat est invalide, cURL bloque le transfert. Vous pouvez contourner cette vérification avec -k ou --insecure, bien que cela comporte des risques de sécurité. Dans la mesure du possible, utilisez une autorité de certification de confiance pour garantir des connexions authentifiées.
Dans certains environnements, le trafic doit passer par un serveur proxy avant d’atteindre la destination.
Utilisez l’option -x ou --proxy pour spécifier le proxy :
curl -x http://proxy_host:proxy_port -O https://example.com/file.jpg
Remplacez proxy_host et proxy_port par les informations appropriées. cURL envoie la requête au proxy, qui télécharge ensuite le fichier pour vous.
Si votre proxy requiert des identifiants, intégrez-les dans l’URL :
curl -x https://proxy.example.com:8080 -U myuser:mypassword -O https://example.com/file.jpg
Encore une fois, stocker des données sensibles en texte clair est dangereux. Les variables d’environnement ou les fichiers de configuration sont des solutions plus sûres.
Le suivi de la progression est essentiel pour les fichiers volumineux ou les connexions lentes.
Par défaut, cURL affiche un indicateur de progression comprenant la taille totale, la vitesse de transfert et le temps estimé restant. Par exemple :
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1256 100 1256 0 0 2243 0 --:--:-- --:--:-- --:--:-- 2246
Cet affichage vous aide à évaluer la quantité restante et à vérifier si la vitesse de transfert est satisfaisante.
Si vous souhaitez moins de détails, ajoutez -# :
curl -# -O https://example.com/largefile.iso
Une barre plus simple affiche la progression totale en pourcentage. Elle est plus lisible, mais ne montre pas les statistiques détaillées comme la vitesse actuelle.
Lorsque vous utilisez cURL dans des scripts, vous pouvez vouloir enregistrer les données de progression. cURL envoie généralement ces informations à stderr, vous pouvez donc les rediriger :
curl -# -O https://example.com/largefile.iso 2>progress.log
Ici, progress.log contient les mises à jour d’état que vous pouvez analyser ou conserver pour une révision ultérieure.
cURL s’impose comme un outil en ligne de commande flexible pour télécharger des fichiers via plusieurs protocoles et environnements. Que vous deviez gérer des redirections complexes, renommer des fichiers à la volée ou limiter la bande passante, cURL a tout ce qu’il faut. En maîtrisant ses principales options et modes, vous pourrez intégrer cURL sans effort dans votre flux de travail quotidien pour le scripting, l’automatisation et des transferts de fichiers plus efficaces.