Utilisation de cURL pour télécharger des fichiers distants à partir de la ligne de commande
Table des matières:
- Télécharger les fichiers de correspondance exacte avec curl -O
- Enregistrer un fichier distant avec un nom différent avec curl -o
- Télécharger plusieurs fichiers simultanément avec curl
Le puissant outil de ligne de commande curl peut être utilisé pour télécharger des fichiers à partir de n'importe quel serveur distant. Les utilisateurs de longue date de la ligne de commande savent que cela peut être utile dans une grande variété de situations, mais pour garder les choses simples, beaucoup trouveront que le téléchargement d'un fichier avec curl peut souvent être une alternative plus rapide à l'utilisation d'un navigateur Web ou d'un client FTP du côté GUI de Mac OS X (ou Linux).Ceci est utile pour les situations locales, mais il y a une valeur particulière si vous êtes dans une situation où vous devez télécharger quelque chose sur un Mac distant lorsque vous êtes connecté via SSH.
Pour les besoins de cette procédure pas à pas, nous nous concentrerons principalement sur le téléchargement de fichiers à partir des deux protocoles HTTP et SFTP couramment rencontrés, bien qu'il convient de noter que cURL prend en charge de nombreux autres protocoles. Bien que curl soit facile à utiliser, il est recommandé d'avoir une certaine connaissance de la ligne de commande.
Télécharger les fichiers de correspondance exacte avec curl -O
L'utilisation de l'indicateur -O majuscule avec curl télécharge le fichier à partir du serveur distant tout en conservant le nom de fichier exact, la syntaxe de base est la suivante :
curl -O
Cela signifie que si le fichier URL spécifié est nommé "sample.zip", il sera téléchargé avec le nom de fichier "sample.zip", et si le fichier est nommé quelque chose d'énorme et compliqué comme "LongExampleFileNameForOSXDaily-v- 1-3-51-revision-515b12-readme.txt" sur le serveur distant, il sera enregistré avec ce nom exact sur la machine locale. Les noms de fichiers plus longs sont souvent mieux gérés avec l'indicateur -o plutôt qu'avec -O, dont nous parlerons bientôt.
Les lecteurs réguliers se souviendront peut-être que nous avons utilisé la commande curl -O pour expliquer comment extraire le contenu audio réel d'un fichier de streaming m3u.
Le début de tout téléchargement avec curl indique le pourcentage transféré, le temps passé à télécharger et le temps restant, ainsi que la vitesse de transfert.
La capture d'écran offre une meilleure représentation que l'exemple collé ci-dessous, mais elle ressemble à ceci :
% Total % Reçu % Xferd Vitesse moyenne Temps Temps Temps Téléchargement de téléchargement actuel Total dépensé Vitesse gauche 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k
Avec la vitesse de transfert, vous pouvez rediriger la sortie de curl vers /dev/null et l'utiliser pour tester la vitesse de la connexion Internet, mais la commande wget a une barre de transfert plus facile à lire et à suivre, donc wget est meilleur adapté à cette tâche.
Enregistrer un fichier distant avec un nom différent avec curl -o
L'utilisation d'un indicateur -o en minuscule vous permettra de spécifier un nom de fichier différent pour le fichier téléchargé par rapport à la façon dont il est nommé sur le serveur distant. Cela peut être utile pour réduire les noms de fichiers longs ou simplement étiqueter quelque chose afin qu'il soit plus facile à trouver par vous-même. La syntaxe générale serait :
curl -o
Par exemple, si vous souhaitez enregistrer un fichier IPSW iOS que vous avez trouvé répertorié sur les serveurs Apple sans avoir le long nom complet, vous pouvez utiliser ce qui suit :
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw
Cela téléchargera le fichier "iPhone5, 3_7.0.4_11B554a_Restore.ipsw" mais nommé plus court comme le plus significatif "iPhone5C-704.ipsw".
Si vous préférez ne pas enregistrer le fichier dans le répertoire de travail actuel, spécifiez un chemin dans le cadre du nom du fichier comme suit :
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Télécharger plusieurs fichiers simultanément avec curl
cURL peut facilement télécharger plusieurs fichiers en même temps, tout ce que vous avez à faire est de spécifier plus d'une URL comme ceci :
curl -O
Pour les fichiers avec des noms différents, ou hébergés sur des serveurs différents, ou dans des chemins de répertoire différents, utilisez l'URL complète, par exemple :
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licences/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
D'autre part, si les noms de fichiers à télécharger utilisent une dénomination incrémentielle, vous pouvez utiliser des crochets pour spécifier une plage de téléchargement, comme ceci :
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
Cela saisirait les fichiers fdl-1.1.txt, fd1-1.2.txt et fd1-1.3.txt en même temps sans avoir à spécifier chaque URL unique. Bien sûr, cela ne fonctionne que si les fichiers se trouvent dans le même répertoire et dans le même domaine.
Authentification avec curl
Vous pouvez également passer l'authentification avec cURL en utilisant le drapeau -u :
curl -u user:pass -O ftp://url_distant/file-to-download.zip
Gardez à l'esprit que l'historique de bash stockera le mot de passe en texte brut lors de l'utilisation de -u avec un nom d'utilisateur et un mot de passe spécifiés, ce n'est donc pas recommandé dans la plupart des situations. Vous pouvez contourner cela en plaçant un espace devant "curl".Si vous n'utilisez pas la barre d'espace pour préfixer la commande, vous voudrez probablement vider l'historique des commandes par la suite pour plus de sécurité.
Protocoles curl pris en charge et utilisation au-delà de HTTP et FTP
Comme mentionné précédemment, l'utilisation de cURL va bien au-delà de HTTP et FTP, car l'entrée de la page de manuel de curl mentionne des protocoles supplémentaires dans la description :
De plus, vous constaterez que curl peut également être utilisé pour les requêtes PUT et POST, les cookies, les proxys, les tunnels, les téléchargements de reprise et même la saisie d'informations d'en-tête HTTP ou la modification d'un agent utilisateur (usurpation efficace) sans avoir besoin d'utiliser un navigateur Web dédié.
Comme la plupart des utilitaires de ligne de commande, vous pouvez en apprendre beaucoup plus sur curl en invoquant la page de manuel appropriée avec la commande "man curl".