Comment télécharger des fichiers avec cURL
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.
Commande de base cURL pour télécharger un fichier Copier le lien
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.txtPour 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.
Enregistrer des fichiers distants Copier le lien
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.txtCela 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.
Choisir un autre nom de fichier Copier le lien
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.txtIci, 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.
Suivre les redirections Copier le lien
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.
Pourquoi les redirections sont importantes Copier le lien
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.
Utiliser -L ou --location Copier le lien
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.jpgCela 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.
Télécharger plusieurs fichiers Copier le lien
cURL peut également gérer plusieurs téléchargements simultanément, vous évitant ainsi d’exécuter la commande plusieurs fois.
Utiliser des accolades et des modèles Copier le lien
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.
Utiliser des plages Copier le lien
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].jpgcURL 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.
Enchaîner plusieurs téléchargements Copier le lien
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.jpgCette méthode télécharge file1.jpg du premier site et file2.jpg du second, sans avoir à exécuter plusieurs commandes.
Limitation de vitesse et délais d’attente Copier le lien
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.
Contrôle de la bande passante Copier le lien
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.zip2M signifie 2 mégaoctets par seconde. Vous pouvez également utiliser K pour kilooctets ou G pour gigaoctets.
Délais d’attente Copier le lien
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.isoIci, cURL s’arrête après 60 secondes, ce qui est utile pour les scripts nécessitant une gestion rapide des échecs.
Mode silencieux et mode verbeux Copier le lien
cURL peut ajuster sa sortie pour afficher un minimum d’informations ou des détails complets.
Téléchargements silencieux Copier le lien
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.jpgCela 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.
Mode verbeux Copier le lien
À l’inverse, -v (ou --verbose) affiche des informations détaillées sur les requêtes et réponses :
curl -v https://example.comLa sortie verbeuse est précieuse pour diagnostiquer des problèmes tels que des certificats SSL invalides ou des redirections incorrectes.
Authentification et sécurité Copier le lien
Certains téléchargements nécessitent des identifiants ou une connexion sécurisée.
Authentification HTTP/FTP Copier le lien
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.jpgL’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.
HTTPS et certificats Copier le lien
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.
Utiliser un proxy Copier le lien
Dans certains environnements, le trafic doit passer par un serveur proxy avant d’atteindre la destination.
Télécharger via un proxy Copier le lien
Utilisez l’option -x ou --proxy pour spécifier le proxy :
curl -x http://proxy_host:proxy_port -O https://example.com/file.jpgRemplacez 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.
Authentification du proxy Copier le lien
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.jpgEncore 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.
Surveiller la progression du téléchargement Copier le lien
Le suivi de la progression est essentiel pour les fichiers volumineux ou les connexions lentes.
Indicateur de progression par défaut Copier le lien
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 --:--:-- --:--:-- --:--:-- 2246Cet affichage vous aide à évaluer la quantité restante et à vérifier si la vitesse de transfert est satisfaisante.
Barre de progression compacte Copier le lien
Si vous souhaitez moins de détails, ajoutez -# :
curl -# -O https://example.com/largefile.isoUne 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.
Capturer la progression dans les scripts Copier le lien
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.logIci, progress.log contient les mises à jour d’état que vous pouvez analyser ou conserver pour une révision ultérieure.
Conclusion Copier le lien
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.