GNU/Linux >> Znalost Linux >  >> Linux

Tipy a triky pro použití příkazu wget Linux

Wget je nástroj s otevřeným zdrojovým kódem příkazového řádku pro stahování souborů a webových stránek z internetu. Získává data z internetu a zobrazuje je ve vašem terminálu nebo je ukládá do souboru. Nástroj wget je neinteraktivní. Můžete z toho vytěžit maximum prostřednictvím skriptů nebo dokonce naplánovat stahování souborů.

Webové prohlížeče, jako je Firefox nebo Chromium, obvykle také stahují soubory, ale ve výchozím nastavení vykreslují informace v grafickém okně a vyžadují, aby s nimi uživatel interagoval. Případně jiní uživatelé systému Linux používají k přenosu dat ze síťového serveru příkaz curl.

Tento článek ukazuje, jak používat příkaz wget ke stažení webových stránek a souborů z internetu.

Instalace wget na Linuxu

Chcete-li nainstalovat wget na systémy Linux založené na Ubuntu/Debianu:

$ apt-get install wget

Chcete-li nainstalovat Wget na Red Hat/CentOS:

$ yum install wget

Chcete-li nainstalovat wget na Fedoru:

$ dnf install wget

Stažení souboru pomocí příkazu wget

Soubor s wget si můžete stáhnout zadáním konkrétního odkazu na URL. Pokud je výchozí adresa URL index.html, stáhne se stránka indexu. Ve výchozím nastavení se obsah stáhne do souboru se stejným názvem souboru ve vašem aktuálním pracovním adresáři. Příkaz wget také poskytuje několik možností, jak výstup nasměrovat na méně nebo ocas.

[#####@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]

Odesílání stažených dat na standardní výstup

K odeslání stažených dat na standardní výstup můžete použít -output-document s pomlčkou –.

[#######@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]

Ukládání stažených souborů s jiným názvem souboru

Můžete použít volbu –output-document nebo -O k zadání jiného názvu výstupního souboru pro vaše stahování.

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

Stahování sekvence souborů

Wget může stáhnout několik souborů, pokud znáte umístění a vzor názvu souborů. Syntaxi Bash můžete použít k určení rozsahu celých čísel, která reprezentují sekvenci názvů souborů od začátku do konce.

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

Stahování více stránek a souborů

Pomocí příkazu wget můžete stáhnout více souborů zadáním všech adres URL obsahujících soubory ke stažení.

$ wget URL1 URL2 URL3

Obnovení částečného stahování

Pokud stahujete velké soubory, může dojít k přerušení stahování. Wget dokáže určit, kde se stahování zastavilo, než bude pokračovat v částečném stahování. Je to užitečné, pokud stahujete velké soubory, jako je distro Fedora 35 Linux ISO. Chcete-li pokračovat ve stahování, použijte volbu –continue nebo -c.

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

Správa rekurzivního stahování pomocí příkazu wget

Použijte volbu –recursive nebo -r k zapnutí rekurzivního stahování pomocí příkazu wget. Rekurzivní režim wget prochází zadanou URL webu a sleduje všechny odkazy až do výchozí nebo zadané maximální úrovně hloubky.

$ wget -r fosslinux.com

Ve výchozím nastavení je maximální hloubka rekurzivního stahování 5. Nicméně wget poskytuje volbu -l pro zadání maximální hloubky rekurze.

$ wget -r -l 11 fosslinux.com

Nekonečnou rekurzi můžete zadat pomocí volby ‚-l 0‘. Například wget stáhne všechny soubory na webu, pokud nastavíte maximální hloubku na nulu (-l 0).

Převod odkazů pro místní prohlížení

–convert-links je další základní možností wget, která převádí odkazy tak, aby byly vhodné pro místní prohlížení.

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

Stahování konkrétních typů souborů

Můžete použít volbu -A s příkazem wget ke stažení určitých typů souborů během rekurzivního stahování. Například použijte následující příkaz wget ke stažení souborů PDF z webové stránky.

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

Všimněte si, že rekurzivní maximální úroveň hloubky vyhledávání je ve výchozím nastavení omezena na 5.

Stahování souborů z FTP serveru

Příkaz wget se může hodit, když potřebujete stáhnout soubory z FTP serveru.

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

Ve výše uvedeném příkladu si wget stáhne „foofoo.pdf“ z FTP serveru na adrese 192.168.1.10.

Můžete také použít volbu -r rekurzivní s protokolem FTP ke stahování souborů FTP rekurzivně.

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

Nastavení maximální velikosti stahování pomocí příkazu wget

Můžete nastavit maximální velikost stahování během rekurzivního načítání souborů pomocí možnosti příznaku –quota. Velikost stahování můžete zadat v bajtech (výchozí), kilobajtech (přípona k) nebo megabajtech (přípona m). Po překročení limitu bude stahování přerušeno.

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

Upozorňujeme, že kvóty stahování nemají vliv na stahování jednoho souboru.

Nastavení limitu rychlosti stahování pomocí příkazu wget

Pro omezení rychlosti stahování při stahování souborů můžete také použít volbu wget –limit-rate flag. Například následující příkaz stáhne soubor „foofoo.tar.gz“ a omezí rychlost stahování na 256 KB/s.

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

Všimněte si, že požadovanou rychlost stahování můžete vyjádřit v bajtech (bez přípony), kilobajtech (pomocí přípony k) nebo megabajtech (pomocí přípony m).

Zrcadlení webu pomocí příkazu wget

Pomocí volby –mirror si můžete stáhnout nebo zrcadlit celý web, včetně jeho adresářové struktury. Zrcadlení webu je podobné rekurzivnímu stahování bez maximální úrovně hloubky. Můžete také použít možnost –rekurzivní –level inf –timestamping –no-remove-listing, což znamená, že je nekonečně rekurzivní.

Můžete také použít wget k archivaci webu s možnostmi –no-cookies –požadavky na stránku –převést-odkazy. Stáhne kompletní stránky a zajistí, že kopie webu bude samostatná a podobná původnímu webu.

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

Pamatujte, že archivace webu stáhne velké množství dat, zejména pokud je web starý.

Čtení adres URL z textového souboru

Příkaz wget může číst více adres URL z textového souboru pomocí volby -i. Vstupní textový soubor může obsahovat více adres URL, ale každá adresa URL musí začínat na novém řádku.

$ wget -i URLS.txt

Rozbalení zkrácené adresy URL

Před návštěvou můžete použít možnost wget –max-redirect, abyste se podívali na zkrácené adresy URL. Zkrácené adresy URL jsou nezbytné pro tištěná média nebo na sociálních sítích s omezeným počtem znaků. Zkrácené adresy URL mohou být navíc podezřelé, protože jejich cíl je ve výchozím nastavení skrytý.
Poznámka:Lepší postup zahrnuje zkombinování možnosti –head a –location pro zobrazení záhlaví HTTP a rozluštění cílové adresy URL. Umožňuje vám nahlédnout do zkrácené adresy URL bez načtení celého zdroje.

[######@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.

Poznámka:Zamýšlený cíl je uveden na výstupním řádku, který začíná umístěním.

Úprava záhlaví HTML

Informace hlavičky HTTP je jednou z informací metadat vložených do paketů, které počítače odesílají ke komunikaci během výměny dat. Například pokaždé, když navštívíte web, váš prohlížeč odešle záhlaví požadavku HTTP. Můžete použít volbu –debug k odhalení informací v záhlaví, které wget odesílá do vašeho prohlížeče pro každý požadavek.

[#####@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---

Zobrazení hlaviček odpovědí pomocí příkazu wget

Můžete použít volbu –debug k zobrazení informací v hlavičce odpovědi v odpovědích.

[#####@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

Odpověď na kód odpovědi 301

Stavové kódy odezvy HTTP jsou pro správce webu nezbytné. Stavový kód odpovědi HTTP 301 obvykle znamená, že adresa URL byla trvale přesunuta na jiné místo. Ve výchozím nastavení wget následuje přesměrování. Můžete však použít volbu –max-redirect k určení, co wget udělá, když narazí na odpověď 301. Můžete jej například nastavit na 0, abyste dali wget pokyn, aby nesledoval žádná přesměrování.

[######@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.

Uložení podrobného výstupu wget do souboru protokolu

Ve výchozím nastavení wget zobrazuje podrobný výstup do terminálu Linux. Můžete však použít volbu -o k protokolování všech výstupních zpráv do určeného souboru protokolu.

$ wget -o foofoo_log.txt fosslinux.com

Výše uvedený příkaz wget uloží podrobný výstup do souboru „foofoo_log.txt“.

Spuštění příkazu wget jako webový pavouk

Příkaz wget můžete nastavit tak, aby fungoval jako webový pavouk pomocí volby –spider. V podstatě nebude stahovat žádné webové stránky, ale pouze zkontroluje, zda tam jsou. Kromě toho budou hlášeny všechny nefunkční adresy URL.

$ wget -r --spider fosslinux.com

Spuštění příkazu wget na pozadí

Pro spuštění procesu wget na pozadí můžete použít volbu -b / –background. Je to nezbytné, pokud stahujete velké soubory, jejichž dokončení bude trvat déle.

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

Ve výchozím nastavení je výstup procesu wget přesměrován na ‚wget-log‘. Můžete však zadat jiný soubor protokolu pomocí volby -o.

Chcete-li sledovat proces wget, použijte příkaz tail.

$ tail -f wget-log

Spuštění wget v režimu ladění

Když spustíte wget v režimu ladění, výstup obsahuje informace o vzdáleném serveru, jako jsou hlavičky požadavků wget a hlavičky odpovědí. Záhlaví požadavků a odpovědí jsou zásadní pro systémové administrátory a webové vývojáře.

$ wget --debug fosslinux.com

Změna uživatelského agenta na příkaz wget

Výchozího uživatelského agenta můžete změnit pomocí volby –user-agent. Například můžete použít ‚Mozilla/4.0‘ jako wget User-Agent k načtení fosslinux.com pomocí následujícího příkazu.

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

Další tipy a triky wget najdete na oficiálních stránkách s manuálem wget.

Koneckonců

Příkaz wget pro Linux poskytuje efektivní způsob stahování a stahování dat z internetu bez použití prohlížeče. Stejně jako všestranný příkaz curl dokáže wget zpracovat jakýkoli složitý scénář stahování, jako je stahování velkých souborů, neinteraktivní stahování a stahování více souborů.


Linux
  1. 7 praktických triků pro použití příkazu wget pro Linux

  2. Tipy a triky pro proměnné prostředí Linuxu

  3. Tipy a triky pro curl a wget

  1. Tipy a triky pro použití CUPS pro tisk s Linuxem

  2. 10 zajímavých triků a tipů pro příkazový řádek Linuxu, které stojí za to vědět

  3. 5 příkladů příkazů Wget ke stažení souborů v Linuxu.

  1. Tipy pro použití příkazu top v Linuxu

  2. 5 zajímavých tipů a triků pro příkazový řádek v Linuxu – část 1

  3. Linux .htaccess tipy a triky