GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment charger des fichiers et des pages Web avec Wget . vers le bas

Vous pouvez utiliser la commande wget pour télécharger des fichiers à l'aide des protocoles HTTP, HTTPS et FTP. C'est un outil puissant qui vous permet de télécharger des fichiers en arrière-plan, de parcourir des sites Web et de reprendre des téléchargements interrompus. Wget propose également un certain nombre d'options qui vous permettent de télécharger des fichiers dans des conditions de réseau extrêmement médiocres.

Cet article vous montre comment utiliser wget pour effectuer des tâches de téléchargement courantes à partir de la ligne de commande.

Installer wget

Linux

La plupart des distributions Linux ont wget installé par défaut. Pour vérifier s'il est installé sur votre système ou non, tapez wget sur votre terminal et appuyez sur Entrée. S'il n'est pas installé, vous obtiendrez une erreur "commande introuvable". Utilisez les commandes appropriées ci-dessous pour l'installer sur votre système.

Pour les systèmes basés sur Ubuntu/Debian, utilisez :

sudo apt update
sudo apt install wget

Pour les systèmes CentOS/RHEL, utilisez :

sudo yum install wget

MacOS

wget est disponible sous forme de package homebrew, alors rendez-vous sur la page homebrew et suivez les instructions pour l'installer. Après cela, vous pouvez installer wget avec :

brew install wget

fenêtre

wget fait partie de msys2, un projet qui vise à fournir un ensemble d'outils de ligne de commande de type Unix. Accédez à la page d'accueil de msys2 et suivez les instructions sur la page pour l'installer. Ouvrez ensuite une fenêtre msys2 et tapez :

pacman -S wget

Vous pouvez maintenant accéder à la commande wget à partir du shell MSYS2.

Télécharger un fichier avec son URL

Si vous avez le lien d'un fichier spécifique, vous pouvez utiliser wget pour le télécharger simplement en fournissant l'URL en paramètre :

wget https://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso

L'exécution de la commande ci-dessus affichera des informations de progression telles que :B. la vitesse de téléchargement actuelle et la quantité de fichiers téléchargée :

wget dérive un nom de fichier de la dernière partie de l'URL et le télécharge dans votre répertoire actuel. Dans notre exemple, le fichier est enregistré sous ubuntu-18.04-desktop-amd64.iso .

S'il y a plusieurs fichiers, vous pouvez les spécifier un par un :

wget <url_1> <url_2>

Notez que wget ne fonctionne que si le fichier est directement accessible depuis l'URL. Parfois, vous rencontrerez des fichiers que vous ne pouvez pas télécharger directement avec un lien - par ex. B. un fichier accessible après la connexion à l'article.



Télécharger des fichiers via FTP

Wget fonctionne de la même manière pour FTP - vous fournissez l'URL FTP comme argument, comme ceci :

wget ftp://ftp.example.com/ubuntu/ubuntu-18.04-desktop-amd64.iso

Parfois, un fichier FTP peut être protégé par un nom d'utilisateur et un mot de passe. Vous pouvez les passer à wget comme ceci :

wget --ftp-user=booleanworld --ftp-password=passw0rd <ftp_url>

Personnaliser le nom et le répertoire du fichier de sortie

Comme nous l'avons déjà vu, wget dérive les noms de fichiers et les télécharge dans votre répertoire actuel. Si vous souhaitez enregistrer le fichier dans un autre répertoire ou sous un autre nom, vous pouvez utiliser le -O Changer. Par exemple, si vous souhaitez enregistrer le téléchargement dans un fichier Ubuntu.iso , Exécutez :

wget <url> -O Ubuntu.iso

Vous pouvez également changer de répertoire de cette façon. Par exemple, pour enregistrer le téléchargement dans un fichier Ubuntu.iso sous /media/sdb1/Software , Exécutez :

wget <url> -O /media/sdb1/Software/Ubuntu.iso

Parfois, vous voudrez peut-être spécifier un répertoire mais laissez wget déterminer le nom du fichier. Vous pouvez le faire en utilisant le -P Changer. Si vous avez un fichier sous le /media/sdb1/Software répertoire, utilisez :

wget <url> -P /media/sdb1/Software

Reprendre les téléchargements interrompus

Un téléchargement peut être interrompu en raison de mauvaises conditions de réseau ou parce que vous l'avez interrompu manuellement en appuyant sur Ctrl+C alors que wget téléchargeait encore un fichier. Vous pouvez reprendre un téléchargement interrompu avec le -c de wget Changer :

wget -c <url>

Si vous avez téléchargé dans un répertoire ou un fichier personnalisé, vous devez utiliser le -c et le -P /-O changer, comme ceci :

wget -c <url> -O <path_to_downloaded_file>

Si vous utilisez -O et -c , assurez-vous de fournir l'URL correcte. Sinon, vous obtiendrez une combinaison partielle de deux fichiers différents, ce qui les rendra inutilisables. De plus, certains serveurs n'autorisent pas la reprise des téléchargements de fichiers. (Vous pouvez savoir si un serveur prend en charge la reprise en regardant la barre de progression. Si la barre de progression se déplace d'avant en arrière au lieu de gauche à droite lors du téléchargement initial, le serveur n'autorise pas la reprise.) Le fichier sera téléchargé à nouveau depuis le début.

Limitation de la vitesse de téléchargement

Si vous téléchargez un fichier volumineux, vous souhaiterez peut-être contrôler la vitesse de téléchargement afin d'avoir une bande passante supplémentaire pour surfer sur le Web. Vous pouvez le faire avec le --limit-rate Changer. Par exemple, pour limiter la vitesse de téléchargement à 512 Ko/s, utilisez :

wget <url> --limit-rate=512k

Vous pouvez également utiliser le m Suffixe pour une limite en Mo/s.

Télécharger des fichiers en arrière-plan

Par défaut, wget télécharge les fichiers au premier plan, ce qui peut ne pas être approprié dans toutes les situations. Par exemple, vous pouvez télécharger un fichier sur votre serveur via SSH. Cependant, vous ne voulez pas garder une connexion SSH ouverte et attendre que le fichier soit téléchargé. Pour télécharger des fichiers en arrière-plan, vous pouvez utiliser le -b Des options comme celle-ci :

wget -b <url>

Lorsque vous exécutez cette commande, wget vous indiquera où enregistrer un journal de téléchargement. Ce fichier est généralement nommé wget-log , wget-log.1 ou similaire :

Si vous souhaitez surveiller ultérieurement l'état du téléchargement, vous pouvez le faire avec :

tail -f wget-log

Cela vous montrera les dernières lignes de l'état du téléchargement :



Vous pouvez appuyer sur Ctrl+C à tout moment pour arrêter d'afficher la progression. Cependant, la progression du téléchargement continuera comme d'habitude en arrière-plan.

Téléchargement de fichiers via de mauvaises connexions réseau

Si vous avez une connexion Internet inégale, les téléchargements peuvent souvent échouer ou être très lents. Par défaut, wget tentera un téléchargement jusqu'à 20 fois en cas de problème. Cependant, dans le cas de connexions Internet particulièrement médiocres, cela peut ne pas suffire. Si vous rencontrez des taux de téléchargement lents avec des erreurs fréquentes, vous pouvez exécuter :

wget -t inf --waitretry=3 --timeout=10 --retry-connrefused <url>

Nous avons d'abord le nombre de tentatives (le -t passer à inf . Si wget a des problèmes pour télécharger le fichier, il essaiera un certain nombre de fois pour terminer le téléchargement. Ensuite, nous avons utilisé --waitretry pour définir le délai entre chaque nouvelle tentative à 3 secondes.

Ensuite, nous définissons le délai d'attente du réseau à 10 secondes avec le --timeout Changer. Si wget n'obtient aucune réponse du serveur pendant plus de 10 secondes, il suppose que la connexion est interrompue. Cela aide wget à réémettre des requêtes réseau pour obtenir le fichier.

Enfin nous avons le --retry-connrefused Changer. Généralement, l'erreur de connexion refusée se produit lorsque le serveur n'est pas en cours d'exécution. Cependant, cela peut également se produire avec des connexions réseau non fiables, et ce commutateur indique à wget de réessayer le téléchargement s'il rencontre une erreur de refus de connexion.

Télécharger des fichiers de manière récursive

Jusqu'à présent, nous avons vu comment télécharger des fichiers spécifiques à l'aide de wget. Parfois, il est plus logique de télécharger des parties connexes d'un site Web. Wget a une fonctionnalité de "téléchargement récursif" à cet effet. Dans ce mode, wget télécharge le fichier source, l'enregistre et y recherche des liens. Ensuite, il télécharge chacun de ces liens, enregistre ces fichiers et en extrait les liens. Par défaut, ce processus se poursuit jusqu'à cinq fois. Cependant, vous pouvez augmenter ou diminuer cette limite (appelée "profondeur de récursivité") selon vos besoins.

Par exemple, pour télécharger récursivement les pages de Wikipédia en anglais, utilisez :

wget -r https://en.wikipedia.org/

Ces fichiers sont stockés dans un répertoire nommé pour le site. Dans notre cas, le contenu se trouverait dans un répertoire appelé . en.wikipedia.org enregistré .

Pour contrôler la "profondeur de récursivité", utilisez le -l Drapeau. Si vous souhaitez définir une valeur personnalisée telle que 7, utilisez :

wget -r -l 7 https://en.wikipedia.org/

Vous pouvez également utiliser inf au lieu d'un nombre. Cela permet à wget de récupérer tout le contenu d'un site Web avec une profondeur de récursivité infinie.

Par défaut, wget télécharge tous les fichiers trouvés en mode récursif. Si vous n'êtes intéressé que par certains types de fichiers, vous pouvez le faire avec le -A (accepter) les choix. Par exemple, si vous souhaitez télécharger des images PNG et JPEG depuis Wikipédia, utilisez :

wget -r https://en.wikipedia.org/ -A png,jpg,jpeg

Cela téléchargera tous les fichiers de Wikipedia (jusqu'à 5 niveaux) mais supprimera tous les fichiers ne se terminant pas par les extensions png , jpg ou jpeg . Vous pouvez également utiliser le -R Changer. Par exemple, pour enregistrer tous les fichiers de Wikipédia à l'exception des documents PDF, utilisez :

wget -r https://en.wikipedia.org/ -R pdf

Convertir les liens dans les fichiers téléchargés

Lors du téléchargement de fichiers de manière récursive, wget télécharge les fichiers et les enregistre tels quels. Les pages Web téléchargées contiendront toujours des liens pointant vers le site Web, ce qui signifie que vous ne pouvez pas utiliser cette copie pour une utilisation hors ligne. Heureusement, wget a une fonction de conversion de lien - il convertit les liens d'une page Web en liens locaux. Pour utiliser cette fonction, utilisez le -k changer comme ceci :

wget -k -r https://en.wikipedia.org/

Définir les en-têtes et les chaînes de l'agent utilisateur

Les clients HTTP (comme les navigateurs et les outils comme wget) envoient une "chaîne d'agent utilisateur" dans le cadre des en-têtes HTTP qui identifient le client. De nombreux webmasters bloquent wget en configurant leur serveur pour bloquer les requêtes contenant "wget" dans cette chaîne. Pour contourner ce problème, vous pouvez remplacer la chaîne d'agent utilisateur de wget par une chaîne personnalisée ; comme celui utilisé par votre navigateur. Pour connaître l'agent utilisateur de votre navigateur, visitez un site comme echo.opera.com. Copiez l'agent utilisateur de la page et exécutez wget avec le -U Changer :

wget <url> -U "<user-agent-string>"

Par exemple, si vous utilisez un Mac, la commande ressemble à ceci :

wget <url> -U "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"

Si vous êtes un développeur testant les fonctionnalités de votre site Web, vous devrez peut-être indiquer à wget de transmettre différents en-têtes HTTP. Vous pouvez le faire avec le --header Changer. Par exemple, pour envoyer le X-Foo En-tête avec la valeur 123, exécutez la commande suivante :

wget <url> --header "X-Foo: 123"

Si vous souhaitez définir plusieurs en-têtes personnalisés, vous pouvez utiliser le --header changer aussi souvent que nécessaire.

Télécharger des fichiers protégés

Jusqu'à présent, dans les exemples, nous avons examiné le téléchargement de fichiers accessibles au public. Cependant, il peut arriver que vous ayez besoin de télécharger des fichiers à partir d'un site protégé par une connexion. Dans ces situations, vous pouvez utiliser une extension de navigateur comme CurlWget (Chrome) ou collect (Firefox). Lorsque vous essayez de télécharger un fichier, ces extensions génèrent une commande wget complète que vous pouvez utiliser pour télécharger le fichier. Dans cet article, nous ne discuterons que de CurlWget, bien que cliget fonctionne de la même manière.

Une fois CurlWget installé dans Chrome, accédez aux paramètres de l'extension et modifiez l'option de l'outil de "curl" à "wget". Allez ensuite dans les paramètres de téléchargement (menu à trois points> Paramètres> Avancé) et sélectionnez l'option "Demander où enregistrer chaque fichier avant de télécharger".

Ensuite, essayez de télécharger un fichier depuis Chrome. Fermez la boîte de dialogue qui demande l'emplacement de téléchargement et cliquez sur l'icône CurlWget dans la barre d'outils. Cela vous donnera une commande wget avec l'agent utilisateur, le cookie et d'autres en-têtes définis comme indiqué ci-dessous :

Vous pouvez maintenant copier et coller cette commande dans une fenêtre de terminal pour télécharger le fichier. Ceci est extrêmement utile dans les situations où vous devez télécharger un fichier protégé par connexion sur un serveur sans tête.

Wget mode "Araignée"

Wget a une fonction "web spider" qui récupère les pages mais ne les enregistre pas. Ceci est utile lorsque vous devez vérifier les liens brisés sur un site Web. Pour utiliser cette option correctement, vous devez également activer le "téléchargement récursif", qui permet à wget de scanner le document et de rechercher des liens de navigation.

Si vous voulez scanner https://example.com/ , Exécutez :

wget --spider -r https://example.com/

Après que wget ait récupéré tous les liens, il affichera tous les liens rompus comme indiqué :

Vous pouvez également enregistrer ce journal dans un fichier avec le -o Possibilité :

wget --spider -r https://example.com -o wget.log

Plus tard, vous pouvez utiliser grep pour rechercher dans le journal des codes d'état ou des fichiers spécifiques. Par exemple, pour trouver des redirections 301 sur votre site Web, vous pouvez utiliser :

grep -B 301 wget.log


Cent OS
  1. [CentOS 7 Apache] :Autorisation refusée :les autorisations de fichier refusent l'accès au serveur

  2. Comment créer un RPM pour votre propre script dans CentOS/RedHat

  3. Comment installer et configurer OTRS (outil de billetterie) sur CentOS 7 / RHEL 7

  4. Comment installer Nextcloud avec Nginx et PHP7-FPM sur CentOS 7

  5. Configurer les hôtes virtuels Apache sur CentOS 7

Comment désactiver AppArmor sur Ubuntu 20.04 Focal Fossa Linux

Comment définir votre adresse par défaut dans cPanel

Un moyen automatisé d'installer des applications essentielles sur Ubuntu

Comment installer AnyDesk sur Manjaro 20

Script bash (III)

Correction des podcasts vidéo Spotify ne fonctionnant pas sur Ubuntu Linux