GNU/Linux >> Tutoriels Linux >  >> Linux

Trucs et astuces pour utiliser la commande wget Linux

Wget est un utilitaire open source en ligne de commande permettant de télécharger des fichiers et des pages Web à partir d'Internet. Il récupère des données sur Internet et les affiche dans votre terminal ou les enregistre dans un fichier. L'utilitaire wget n'est pas interactif. Vous pouvez en tirer le meilleur parti grâce à des scripts ou même programmer des téléchargements de fichiers.

En règle générale, les navigateurs Web tels que Firefox ou Chromium téléchargent également des fichiers, sauf que, par défaut, ils affichent les informations dans une fenêtre graphique et nécessitent qu'un utilisateur interagisse avec eux. Alternativement, d'autres utilisateurs du système Linux utilisent la commande curl pour transférer des données depuis un serveur réseau.

L'article explique comment utiliser la commande wget pour télécharger des pages Web et des fichiers depuis Internet.

Installer wget sous Linux

Pour installer wget sur des systèmes Linux basés sur Ubuntu/Debian :

$ apt-get install wget

Pour installer Wget sur Red Hat/CentOS :

$ yum install wget

Pour installer wget sur Fedora :

$ dnf install wget

Télécharger un fichier avec la commande wget

Vous pouvez télécharger un fichier avec wget en fournissant un lien spécifique vers une URL. Si votre URL par défaut est index.html, la page d'index est téléchargée. Par défaut, le contenu est téléchargé dans un fichier portant le même nom de fichier dans votre répertoire de travail actuel. La commande wget fournit également plusieurs options pour diriger la sortie vers less ou tail.

[#####@fedora ~]$ wget http://example.com | tail -n 6
--2021-11-09 12:06:02-- http://example.com/
Resolving example.com (example.com)... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
Connecting to example.com (example.com)|93.184.216.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1256 (1.2K) [text/html]
Saving to: ‘index.html.1’
index.html.1 100%[======================>] 1.23K --.-KB/s in 0s
2021-11-09 12:06:03 (49.7 MB/s) - ‘index.html.1’ saved [1256/1256]

Envoi des données téléchargées vers la sortie standard

Vous pouvez utiliser le -output-document avec un tiret – pour envoyer vos données téléchargées vers la sortie standard.

[#######@fedora ~]$ wget http://example.com --output-document - | head -n8
--2021-11-09 12:17:11-- http://example.com/
Resolving example.com (example.com)... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
Connecting to example.com (example.com)|93.184.216.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1256 (1.2K) [text/html]
Saving to: ‘STDOUT’
<!doctype html> 0%[ ] 0 --.-KB/s 
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
- 100%[======================>] 1.23K --.-KB/s in 0s
2021-11-09 12:17:12 (63.5 MB/s) - written to stdout [1256/1256]

Enregistrer les téléchargements avec un nom de fichier différent

Vous pouvez utiliser l'option –output-document ou -O pour spécifier un nom de fichier de sortie différent pour votre téléchargement.

$ wget http://fosslinux.com --output-document foo.html
$ wget http://fosslinux.com -O foofoofoo.html

Télécharger une séquence de fichiers

Wget peut télécharger plusieurs fichiers si vous connaissez l'emplacement et le modèle de nom de fichier des fichiers. Vous pouvez utiliser la syntaxe Bash pour spécifier une plage d'entiers pour représenter une séquence de noms de fichiers du début à la fin.

$ wget http://fosslinux.com/filename_{1..7}.webp

Téléchargement de plusieurs pages et fichiers

Vous pouvez télécharger plusieurs fichiers avec la commande wget en spécifiant toutes les URL contenant les fichiers à télécharger.

$ wget URL1 URL2 URL3

Reprendre un téléchargement partiel

Si vous téléchargez des fichiers volumineux, il peut y avoir des interruptions du téléchargement. Wget peut déterminer où votre téléchargement s'est arrêté avant de continuer avec le téléchargement partiel. C'est pratique si vous téléchargez des fichiers volumineux comme une distribution ISO Fedora 35 Linux. Pour continuer un téléchargement, utilisez l'option –continue ou -c.

$ wget --continue https://fosslinux.com/foss-linux-distro.iso

Gérer les téléchargements récursifs avec la commande wget

Utilisez l'option –recursive ou -r pour activer les téléchargements récursifs avec la commande wget. Le mode récursif wget explore une URL de site fournie et suit tous les liens jusqu'au niveau de profondeur par défaut ou maximal spécifié.

$ wget -r fosslinux.com

Par défaut, la profondeur de téléchargement récursif maximale est de 5. Cependant, wget fournit l'option -l pour spécifier votre profondeur de récursivité maximale.

$ wget -r -l 11 fosslinux.com

Vous pouvez spécifier une récursivité infinie avec l'option '-l 0'. Par exemple, wget téléchargera tous les fichiers d'un site Web si vous définissez la profondeur maximale sur zéro (-l 0).

Convertir les liens pour un affichage local

Le –convert-links est encore une autre option wget essentielle qui convertit les liens pour les rendre adaptés à l'affichage local.

$ wget -r l 3 --convert-links fosslinux.com

Télécharger des types de fichiers spécifiques

Vous pouvez utiliser l'option -A avec la commande wget pour télécharger des types de fichiers spécifiques lors de téléchargements récursifs. Par exemple, utilisez la commande wget suivante pour télécharger des fichiers pdf à partir d'un site Web.

$ wget -A '*.pdf -r fosslinux.com

Notez que le niveau de profondeur de récupération maximale récursive est limité à 5 par défaut.

Télécharger des fichiers depuis un serveur FTP

La commande wget peut être utile lorsque vous devez télécharger des fichiers à partir d'un serveur FTP.

$ wget --ftp-user=username --ftp-password=password ftp://192.168.1.13/foofoo.pdf

Dans l'exemple ci-dessus, wget téléchargera "foofoo.pdf" à partir du serveur FTP situé à 192.168.1.10.

Vous pouvez également utiliser l'option -r recursive avec le protocole FTP pour télécharger des fichiers FTP de manière récursive.

$ wget -r --ftp-user=username --ftp-password=pass ftp://192.168.1.13/

Définir la taille de téléchargement maximale avec la commande wget

Vous pouvez définir la taille de téléchargement maximale lors des récupérations de fichiers récursives à l'aide de l'option d'indicateur –quota. Vous pouvez spécifier la taille du téléchargement en octets (par défaut), en kilo-octets (suffixe k) ou en mégaoctets (suffixe m). Le processus de téléchargement sera interrompu lorsque la limite sera dépassée.

$ wget -r --quota=1024m fosslinux.com

Notez que les quotas de téléchargement n'affectent pas le téléchargement d'un seul fichier.

Définir la limite de vitesse de téléchargement avec la commande wget

Vous pouvez également utiliser l'option wget –limit-rate flag pour limiter la vitesse de téléchargement lors du téléchargement de fichiers. Par exemple, la commande suivante téléchargera le fichier "foofoo.tar.gz" et limitera la vitesse de téléchargement à 256 Ko/s.

$ wget --limit-rate=256k URL/ foofoo.tar.gz

Notez que vous pouvez exprimer le taux de téléchargement souhaité en octets (sans suffixe), en kilo-octets (avec le suffixe k) ou en mégaoctets (avec le suffixe m).

Mise en miroir d'un site Web avec la commande wget

Vous pouvez télécharger ou mettre en miroir un site entier, y compris sa structure de répertoires avec l'option –mirror. La mise en miroir d'un site est similaire au téléchargement récursif sans niveau de profondeur maximum. Vous pouvez également utiliser l'option –recursive –level inf –timestamping –no-remove-listing, ce qui signifie qu'elle est infiniment récursive.

Vous pouvez également utiliser wget pour archiver un site avec les options –no-cookies –page-requisites –convert-links. Il téléchargera des pages complètes et s'assurera que la copie du site est autonome et similaire au site d'origine.

$ wget --mirror --convert-links fosslinux.com 
$ wget -recursive --level inf --timestamping –no-remove-listing

Notez que l'archivage d'un site téléchargera beaucoup de données, surtout si le site Web est ancien.

Lire des URL à partir d'un fichier texte

La commande wget peut lire plusieurs URL à partir d'un fichier texte à l'aide de l'option -i. Le fichier texte d'entrée peut contenir plusieurs URL, mais chaque URL doit commencer sur une nouvelle ligne.

$ wget -i URLS.txt

Développer une URL raccourcie

Vous pouvez utiliser l'option wget –max-redirect pour consulter les URL raccourcies avant votre visite. Les URL raccourcies sont indispensables pour la presse écrite ou sur les réseaux sociaux avec des limites de caractères. De plus, les URL raccourcies peuvent également être suspectes car leur destination est masquée par défaut.
Remarque :une meilleure pratique consiste à combiner l'option –head et –location pour afficher les en-têtes HTTP et démêler la destination de l'URL finale. Il vous permet de jeter un coup d'œil dans une URL raccourcie sans charger la ressource complète.

[######@fedora ~]$ wget --max-redirect 0 https://t.co/GVr5v9554B?amp=1
--2021-11-10 16:22:08-- https://t.co/GVr5v9554B?amp=1
Resolving t.co (t.co)... 104.244.42.133, 104.244.42.69, 104.244.42.5, ...
Connecting to t.co (t.co)|104.244.42.133|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://bit.ly/ [following]
0 redirections exceeded.

Remarque :La destination prévue est révélée sur la ligne de sortie qui commence par l'emplacement.

Modification des en-têtes HTML

Les informations d'en-tête HTTP font partie des informations de métadonnées intégrées dans les paquets que les ordinateurs envoient pour communiquer lors de l'échange de données. Par exemple, chaque fois que vous visitez un site Web, votre navigateur envoie des en-têtes de requête HTTP. Vous pouvez utiliser l'option –debug pour révéler les informations d'en-tête que wget envoie à votre navigateur pour chaque requête.

[#####@fedora ~]$ wget --debug fosslinux.com
DEBUG output created by Wget 1.21.1 on linux-gnu.
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.21.1
Accept: */*
Accept-Encoding: identity
Host: fosslinux.com
Connection: Keep-Alive
---request end---
HTTP request sent, awaiting response...
---response begin---

Affichage des en-têtes de réponse avec la commande wget

Vous pouvez utiliser l'option –debug pour afficher les informations d'en-tête de réponse dans les réponses renvoyées.

[#####@fedora ~]$ wget --debug fosslinux.com
…..
---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 10 Nov 2021 13:36:29 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Cache: HIT
---response end---
200 OK

Répondre à un code de réponse 301

Les codes d'état de réponse HTTP sont essentiels pour les administrateurs Web. Généralement, un code d'état de réponse HTTP 301 signifie qu'une URL a été déplacée de façon permanente vers un autre emplacement. Par défaut, wget suit les redirections. Cependant, vous pouvez utiliser l'option –max-redirect pour déterminer ce que fait wget lorsqu'il rencontre une réponse 301. Par exemple, vous pouvez le définir sur 0 pour demander à wget de ne suivre aucune redirection.

[######@fedora ~]$ wget --max-redirect 0 https://fosslinux.com
--2021-11-10 16:55:54-- https://fosslinux.com/
Resolving fosslinux.com (fosslinux.com)... 67.205.134.74, 2604:a880:400:d0::4bfe:a001
Connecting to fosslinux.com (fosslinux.com)|67.205.134.74|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://www.fosslinux.com/ [following]
0 redirections exceeded.

Enregistrement de la sortie détaillée de wget dans un fichier journal

Par défaut, wget affiche une sortie détaillée sur le terminal Linux. Cependant, vous pouvez utiliser l'option -o pour consigner tous les messages de sortie dans un fichier journal spécifié.

$ wget -o foofoo_log.txt fosslinux.com

La commande wget ci-dessus enregistrera la sortie détaillée dans le fichier "foofoo_log.txt".

Exécuter la commande wget en tant qu'araignée Web

Vous pouvez faire en sorte que la commande wget fonctionne comme une araignée Web à l'aide de l'option –spider. Essentiellement, il ne téléchargera aucune page Web mais vérifiera seulement qu'elles sont là. De plus, toute URL cassée sera signalée.

$ wget -r --spider fosslinux.com

Exécuter la commande wget en arrière-plan

Vous pouvez utiliser l'option -b / –background pour exécuter le processus wget en arrière-plan. Il est essentiel si vous téléchargez des fichiers volumineux qui prendront plus de temps à terminer.

$ wget -b fosslinux.com/latest.tar.gz

Par défaut, la sortie du processus wget est redirigée vers « wget-log ». Cependant, vous pouvez spécifier un fichier journal différent avec l'option -o.

Pour surveiller le processus wget, utilisez la commande tail.

$ tail -f wget-log

Exécuter wget en mode débogage

Lorsque vous exécutez wget en mode débogage, la sortie inclut des informations sur le serveur distant telles que les en-têtes de requête wget et les en-têtes de réponse. Les en-têtes de requête et de réponse sont essentiels pour les administrateurs système et les développeurs Web.

$ wget --debug fosslinux.com

Modification de l'agent utilisateur de la commande wget

Vous pouvez modifier l'agent utilisateur par défaut avec l'option –user-agent. Par exemple, vous pouvez utiliser 'Mozilla/4.0' comme wget User-Agent pour récupérer fosslinux.com avec la commande suivante.

$ wget --user-agent='Mozilla/4.0' fosslinux.com

Découvrez plus de trucs et astuces sur wget dans les pages de manuel officielles de wget.

Conclusion

La commande Linux wget fournit un moyen efficace d'extraire et de télécharger des données depuis Internet sans utiliser de navigateur. Tout comme la commande curl polyvalente, wget peut gérer n'importe quel scénario de téléchargement complexe comme les téléchargements de fichiers volumineux, les téléchargements non interactifs et les téléchargements de plusieurs fichiers.


Linux
  1. 7 astuces pratiques pour utiliser la commande Linux wget

  2. Trucs et astuces pour utiliser CUPS pour imprimer avec Linux

  3. 10 astuces et conseils intéressants en ligne de commande Linux à connaître

  4. Trucs et astuces pour curl et wget

  5. Trucs et astuces Linux .htaccess

Comment télécharger des fichiers avec la commande Wget sous Linux

Trucs et astuces pour utiliser Ctrl + Z dans Ubuntu Linux

19 trucs et astuces utiles pour la ligne de commande Linux

10 trucs et astuces sympas pour Debian

Trucs et astuces pour la ligne de commande Netstat

Comment télécharger des fichiers dans Rocky Linux 8 sur la ligne de commande à l'aide de wget