Comment télécharger et reprendre des fichiers avec cURL
Pour télécharger un fichier avec cURL, indiquez une URL et un nom de fichier de sortie avec -o.
La procédure ci-dessous enregistre une archive des sources du projet curl, suit les redirections et
montre comment reprendre le téléchargement s’il s’interrompt en cours de route.
Vérifier cURL dans votre terminal
Ouvrez un terminal dans un répertoire où vous pouvez enregistrer des fichiers. Ces exemples utilisent des commandes de style Bash et ont été testés sur macOS avec cURL 8.7.1 et 8.22.0. Vérifiez d’abord la version installée :
curl --version
La première ligne doit commencer par curl suivi d’un numéro de version. Si la commande est
introuvable, consultez la page de téléchargement de curl pour trouver une installation
adaptée à votre plateforme.
Télécharger dans un fichier local
Cette commande télécharge l’archive des sources de curl 8.22.0 comme fichier d’exemple. Vous n’avez pas besoin de la compiler ni de l’installer. La commande écrase un fichier existant portant le même nom : choisissez donc un autre nom de sortie si vous devez conserver ce fichier.
curl -fsSLo curl-8.22.0.tar.xz 'https://curl.se/download/curl-8.22.0.tar.xz'
Les options courtes sont combinées en -fsSLo :
| Option | Effet |
|---|---|
-f (--fail) | Signale les erreurs HTTP telles que 404 comme un transfert échoué. |
-s (--silent) | Masque l’indicateur de progression. |
-S (--show-error) | Garde les messages d’erreur visibles lors de l’utilisation de -s. |
-L (--location) | Suit les redirections HTTP. |
-o (--output) | Enregistre la réponse dans le fichier dont le nom suit l’option. |
Ces options sont documentées dans le manuel de curl.
Sans option de sortie, cURL écrit sur la sortie standard, qui est généralement votre terminal.
Avec -o, il écrit dans un fichier
du répertoire courant, sauf si vous indiquez un autre chemin.
L’option -L est importante lorsqu’un lien de téléchargement redirige vers un autre
emplacement : cURL demande la destination et enregistre sa réponse sous le nom de fichier choisi.
Conservez-la à la fois dans le téléchargement initial et dans la commande de reprise ci-dessous.
En cas de succès, cette commande n’affiche rien et vous ramène à l’invite. Vérifiez la taille enregistrée :
wc -c < curl-8.22.0.tar.xz
Pour cette archive, le nombre est de 2953092 octets. Cela vérifie la taille, pas le contenu.
Utilisez la somme de contrôle de l’éditeur lorsque vous devez vérifier les octets téléchargés. Pour
télécharger votre propre fichier, remplacez à la fois l’URL et le nom du fichier de sortie. Gardez
l’URL entre guillemets afin que des caractères du shell tels que & ne scindent pas la
commande.
Reconnaître un téléchargement échoué
Avec -f, une réponse telle que HTTP 404 ou 500 fait que cURL se termine avec le code
22 et affiche un message d’erreur, sans enregistrer la page d’erreur du serveur comme
votre téléchargement. Sans -f, une réponse d’erreur HTTP peut ressembler à un transfert
réussi. Consultez la section du manuel sur le comportement de --fail.
Une défaillance réseau peut tout de même laisser un fichier partiel sur le disque. La seule présence
d’un fichier ne prouve pas que le transfert est terminé. Si l’URL renvoie une page de connexion avec
HTTP 200, -f ne le détectera pas non plus : cURL ne peut pas savoir si ces octets
correspondent au fichier que vous vouliez télécharger.
Reprendre un téléchargement interrompu
Si un téléchargement s’arrête, conservez son fichier partiel. Pour essayer vous-même, lancez un
nouveau téléchargement avec une limite de vitesse, puis appuyez sur Ctrl+C au bout de quelques
secondes. Cette opération écrase volontairement l’archive que vous venez de télécharger.
L’indicateur de progression est visible ici, car la commande omet -s.
curl -fSL --limit-rate 50K -o curl-8.22.0.tar.xz 'https://curl.se/download/curl-8.22.0.tar.xz'
Poursuivez depuis le même répertoire, avec le même nom de fichier de sortie et la même URL :
curl -fsSL -C - -o curl-8.22.0.tar.xz 'https://curl.se/download/curl-8.22.0.tar.xz'
Le - placé après -C indique à cURL d’utiliser la taille du fichier local
comme décalage d’octet de départ. Pour HTTP, le serveur doit honorer la requête de plage afin que
cURL puisse ajouter les octets restants. Le
guide curl sur la reprise des téléchargements
explique comment le décalage est choisi. Une fois la commande réussie, répétez la vérification de
taille ci-dessus.
Si le serveur ignore la requête de plage, cURL signale l’erreur 33 au lieu de reprendre.
Relancez la commande de téléchargement d’origine, sans -C -, pour remplacer le fichier
partiel par un téléchargement complet.
Ne reprenez qu’un fichier dont le contenu distant n’a pas changé. cURL utilise la longueur de votre fichier partiel, mais ne compare pas les octets déjà enregistrés avec la copie du serveur. Un fichier distant modifié peut donc produire un mélange d’ancien et de nouveau contenu, même si le transfert réussit. Une URL de téléchargement versionnée, comme celle de l’archive utilisée ici, évite de dépendre d’une URL « latest » qui change. Si vous ne savez pas si le fichier a changé, recommencez depuis le début.
Pour envoyer des fichiers afin d’exécuter un Template Transloadit, consultez le guide de l’API sur la création d’une Assembly (English).
