Question : J'utilise généralement wget pour télécharger des fichiers. Sur certains systèmes, wget n'est pas installé et seul curl est disponible. Pouvez-vous m'expliquer avec un exemple simple comment je peux télécharger un fichier distant à l'aide de curl ? Y a-t-il une différence entre curl et wget ?
Réponse : De manière générale, wget et curl sont des utilitaires de ligne de commande qui font la même chose.
- Ils peuvent tous deux être utilisés pour télécharger des fichiers via FTP et HTTP(s).
- Vous pouvez également envoyer une requête HTTP POST en utilisant curl et wget
- Cependant, curl fournit des API qui peuvent être utilisées par les programmeurs dans leur propre code. curl utilise libcurl qui est une bibliothèque multiplateforme.
- wget est juste un outil de ligne de commande sans aucune API.
- Curl prend également en charge beaucoup plus de protocoles que wget ne prend pas en charge. Par exemple :SCP, SFTP, TFTP, TELNET, LDAP(S), FILE, POP3, IMAP, SMTP, RTMP et RTSP.
- Il y a un avantage majeur à utiliser wget. wget prend en charge le téléchargement récursif, contrairement à curl.
Exemples Wget
L'exemple suivant télécharge le fichier et le stocke sous le même nom que le serveur distant.
wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
L'exemple suivant télécharge le fichier et le stocke sous un nom différent de celui du serveur distant. Ceci est utile lorsque l'URL distante ne contient pas le nom du fichier dans l'URL, comme illustré dans l'exemple ci-dessous.
wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
Plus d'exemples de wget :Le guide de téléchargement ultime de Wget avec 15 exemples impressionnants
Exemples de boucles
$ curl -O http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 28 3762k 28 1085k 0 0 72771 0 0:00:52 0:00:15 0:00:37 54267
L'option -O (O majuscule) est importante. Sans cela, curl commencera à vider le fichier téléchargé sur la sortie standard. En utilisant -O, il télécharge les fichiers au même nom que le serveur distant. Dans l'exemple ci-dessus, nous téléchargeons strx25-0.9.2.1.tar.bz2, donc le fichier téléchargé portera également le même nom.
Au lieu de -O, vous pouvez également spécifier "-nom-distant" comme indiqué ci-dessous. Les deux sont identiques.
$ curl --remote-name http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Pendant le téléchargement de curl, il donne les informations utiles suivantes :
- % - Le % total du téléchargement qui a été effectué à ce jour. Lorsqu'il atteint 100%, le téléchargement est terminé. Dans l'exemple ci-dessus, il n'a téléchargé que 28 % du fichier.
- Total – La taille totale du fichier
- Reçu :la taille totale du fichier qui a été téléchargé jusqu'à présent. Dans l'exemple ci-dessus, il a téléchargé 1085k jusqu'à présent (sur un total de 3762k)
- Xferd - Ceci sera utilisé lorsque vous téléchargerez des fichiers sur le serveur distant. Pendant le téléchargement, cela indiquera la taille totale du fichier qui a été téléchargé jusqu'à présent. Puisque nous téléchargeons un fichier, dans cet exemple, c'est 0.
- Average Speed Dload – Cela indique la vitesse moyenne de téléchargement.
- AVerage Speed Upload – Lors du téléchargement d'un fichier, cela indiquera la vitesse de téléchargement moyenne
- Time Total - Cela indique le temps total qu'il faudra pour télécharger (ou télécharger) l'ensemble du fichier en fonction de la vitesse de téléchargement (ou de téléchargement) actuelle. Dans cet exemple, il faudra environ 52 secondes au total pour télécharger ce fichier.
- Temps passé - Le temps que curl a passé jusqu'à présent à télécharger (ou télécharger) le fichier. Dans cet exemple, il a passé 15 secondes jusqu'à présent.
- Temps restant – Ceci est calculé sur la base du « Temps total » - « Temps passé ».
- Vitesse actuelle - Ceci indique la vitesse de téléchargement/téléchargement actuelle. Comparez cela avec la vitesse moyenne de chargement/téléchargement pour voir à quelle vitesse votre système télécharge actuellement.
Si vous souhaitez télécharger le fichier et le stocker sous un nom différent de celui du fichier sur le serveur distant, utilisez -o (o minuscule) comme indiqué ci-dessous. Ceci est utile lorsque l'URL distante ne contient pas le nom du fichier dans l'URL, comme illustré dans l'exemple ci-dessous.
$ curl -o taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 50243 100 50243 0 0 170k 0 --:--:-- --:--:-- --:--:-- 400k
Dans l'exemple ci-dessus, il n'y a pas de nom de fichier dans l'URL distante, il appelle simplement un script php qui lui transmet certains paramètres. Cependant, le fichier sera téléchargé et enregistré sous taglist.zip sur votre système local. Au lieu de -o, vous pouvez également spécifier "–output".
Plus d'exemples curl :15 exemples pratiques de commandes Linux cURL