Ke stažení souborů pomocí protokolů HTTP, HTTPS a FTP můžete použít příkaz wget. Je to výkonný nástroj, který vám umožňuje stahovat soubory na pozadí, procházet webové stránky a obnovit přerušené stahování. Wget také nabízí řadu možností, které vám umožní stahovat soubory přes extrémně špatné síťové podmínky.
Tento článek ukazuje, jak používat wget k provádění běžných úloh stahování z příkazového řádku.
Nainstalujte wget
Linux
Většina distribucí Linuxu má ve výchozím nastavení nainstalovaný wget. Chcete-li zkontrolovat, zda je ve vašem systému nainstalována nebo ne, zadejte wget
na terminálu a stiskněte Enter. Pokud není nainstalován, zobrazí se chyba „příkaz nenalezen“. K instalaci do vašeho systému použijte příslušné příkazy níže.
Pro systémy založené na Ubuntu/Debianu použijte:
sudo apt update sudo apt install wget
Pro systémy CentOS/RHEL použijte:
sudo yum install wget
MacOS
wget je k dispozici jako balíček homebrew, takže přejděte na stránku homebrew a nainstalujte jej podle pokynů. Poté můžete nainstalovat wget pomocí:
brew install wget
okno
wget je součástí msys2, projektu, jehož cílem je poskytnout sadu nástrojů příkazového řádku podobných Unixu. Přejděte na domovskou stránku msys2 a nainstalujte jej podle pokynů na stránce. Poté otevřete okno msys2 a zadejte:
pacman -S wget
Nyní můžete přistupovat k příkazu wget z prostředí MSYS2.
Stáhnout soubor s jeho adresou URL
Pokud máte odkaz na konkrétní soubor, můžete jej pomocí wget stáhnout jednoduše zadáním adresy URL jako parametru:
wget https://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso
Spuštěním výše uvedeného příkazu se zobrazí informace o průběhu, jako například:B. aktuální rychlost stahování a jak velká část souboru byla stažena:
wget odvodí název souboru z poslední části adresy URL a stáhne jej do vašeho aktuálního adresáře. V našem příkladu je soubor uložen pod ubuntu-18.04-desktop-amd64.iso
.
Pokud existuje více souborů, můžete je zadat jeden po druhém:
wget <url_1> <url_2>
Všimněte si, že wget funguje pouze v případě, že je soubor přímo přístupný z adresy URL. Občas narazíte na soubory, které nemůžete stáhnout přímo pomocí odkazu – např. B. soubor, který je přístupný po přihlášení v článku.
Stahujte soubory přes FTP
Wget funguje stejným způsobem pro FTP – zadáte FTP URL jako argument, takto:
wget ftp://ftp.example.com/ubuntu/ubuntu-18.04-desktop-amd64.iso
Někdy může být soubor FTP chráněn uživatelským jménem a heslem. Můžete je předat wget takto:
wget --ftp-user=booleanworld --ftp-password=passw0rd <ftp_url>
Přizpůsobte název výstupního souboru a adresář
Jak jsme již viděli, wget odvodí názvy souborů a stáhne je do vašeho aktuálního adresáře. Pokud chcete soubor uložit do jiného adresáře nebo pod jiným názvem, můžete použít -O
Přepínač. Například pokud chcete uložit stahování do souboru Ubuntu.iso
, Spustit:
wget <url> -O Ubuntu.iso
Tímto způsobem můžete také změnit adresář. Například pro uložení staženého souboru jako souboru Ubuntu.iso
pod /media/sdb1/Software
, Spustit:
wget <url> -O /media/sdb1/Software/Ubuntu.iso
Někdy můžete chtít zadat adresář, ale nechat wget zjistit název souboru. Můžete to udělat pomocí -P
Přepínač. Pokud máte soubor pod /media/sdb1/Software
adresář, použijte:
wget <url> -P /media/sdb1/Software
Obnovit přerušené stahování
Stahování může být přerušeno kvůli špatným podmínkám sítě nebo proto, že jste jej ručně přerušili stisknutím Ctrl+C, zatímco wget stále stahoval soubor. Přerušené stahování můžete obnovit pomocí wget -c
Přepínač:
wget -c <url>
Pokud jste stáhli do vlastního adresáře nebo souboru, měli byste použít -c
a -P
/-O
přepínač, takto:
wget -c <url> -O <path_to_downloaded_file>
Pokud používáte -O
a -c
, ujistěte se, že zadáváte správnou adresu URL. V opačném případě získáte částečnou kombinaci dvou různých souborů, která je činí nepoužitelnými. Některé servery navíc neumožňují obnovení stahování souborů. (Zda server podporuje obnovení, poznáte podle ukazatele průběhu. Pokud se ukazatel průběhu během počátečního stahování pohybuje tam a zpět místo zleva doprava, server obnovení neumožňuje.) Soubor bude stažen znovu z začátek.
Omezování rychlosti stahování
Pokud stahujete velký soubor, možná budete chtít ovládat rychlost stahování, abyste měli větší šířku pásma pro procházení webu. Můžete to udělat pomocí --limit-rate
Přepínač. Chcete-li například omezit rychlost stahování na 512 KB/s, použijte:
wget <url> --limit-rate=512k
Můžete také použít m
Přípona pro limit v MB/s.
Stahování souborů na pozadí
Ve výchozím nastavení wget stahuje soubory na popředí, což nemusí být vhodné v každé situaci. Jako příklad můžete chtít stáhnout soubor na váš server přes SSH. Nechcete však ponechat otevřené připojení SSH a čekat na stažení souboru. Chcete-li stahovat soubory na pozadí, můžete použít -b
Možnosti, jako je tato:
wget -b <url>
Když spustíte tento příkaz, wget vám řekne, kam uložit protokol stahování. Tento soubor se obvykle jmenuje wget-log
, wget-log.1
nebo podobně:
Pokud budete chtít později sledovat stav stahování, můžete tak učinit pomocí:
tail -f wget-log
Zobrazí se posledních několik řádků stavu stahování:
Chcete-li zastavit zobrazování průběhu, můžete kdykoli stisknout Ctrl+C. Stahování však bude pokračovat jako obvykle na pozadí.
Stahování souborů přes špatná síťová připojení
Pokud máte nerovnoměrné připojení k internetu, stahování může často selhat nebo být velmi pomalé. Ve výchozím nastavení se wget v případě problémů pokusí o stažení až 20krát. V případě zvláště špatného připojení k internetu to však nemusí stačit. Pokud zaznamenáte pomalou rychlost stahování s častými chybami, můžete spustit:
wget -t inf --waitretry=3 --timeout=10 --retry-connrefused <url>
Nejprve máme počet pokusů (-t
přepněte na inf
. Pokud má wget problémy se stahováním souboru, pokusí se stahování dokončit mnohokrát. Potom jsme použili --waitretry
pro nastavení prodlevy mezi každým pokusem o opakování na 3 sekundy.
Dále nastavíme časový limit sítě na 10 sekund pomocí --timeout
Přepínač. Pokud wget neobdrží žádnou odpověď od serveru po dobu delší než 10 sekund, předpokládá, že spojení je mimo provoz. To pomáhá wget reissue síťové požadavky získat soubor.
Nakonec máme --retry-connrefused
Přepínač. Chyba odmítnutí připojení obvykle nastane, když server neběží. Může k tomu však také dojít u nespolehlivých síťových připojení a tento přepínač říká wgetu, aby zkusil stahování znovu, pokud narazí na chybu odmítnutí připojení.
Stahujte soubory rekurzivně
Zatím jsme viděli, jak stahovat konkrétní soubory pomocí wget. Někdy má větší smysl stáhnout související části webu. Wget má pro tento účel funkci "rekurzivního stahování". V tomto režimu wget stáhne zdrojový soubor, uloží jej a vyhledává v něm odkazy. Poté stáhne každý z těchto odkazů, uloží tyto soubory a extrahuje z nich odkazy. Ve výchozím nastavení tento proces pokračuje až pětkrát. Tento limit (označovaný jako „hloubka rekurze“) však můžete podle potřeby zvýšit nebo snížit.
Chcete-li například rekurzivně stáhnout stránky anglické Wikipedie, použijte:
wget -r https://en.wikipedia.org/
Tyto soubory jsou uloženy v adresáři s názvem webu. V našem případě by byl obsah v adresáři s názvem . uloženo en.wikipedia.org
.
K ovládání "hloubky rekurze" použijte -l
Vlajka. Pokud chcete nastavit vlastní hodnotu, například 7, použijte:
wget -r -l 7 https://en.wikipedia.org/
Můžete také použít inf
místo čísla. To umožňuje wgetu načíst veškerý obsah webové stránky s nekonečnou hloubkou rekurze.
Ve výchozím nastavení wget stahuje všechny nalezené soubory v rekurzivním režimu. Pokud vás zajímají pouze určité typy souborů, můžete to provést pomocí -A
(přijmout) možnosti. Pokud si například chcete stáhnout obrázky PNG a JPEG z Wikipedie, použijte:
wget -r https://en.wikipedia.org/ -A png,jpg,jpeg
Tímto se stáhnou všechny soubory z Wikipedie (až 5 úrovní), ale odstraní se všechny soubory, které nekončí příponou png
, jpg
nebo jpeg
. Můžete také použít -R
Přepínač. Chcete-li například uložit všechny soubory z Wikipedie kromě dokumentů PDF, použijte:
wget -r https://en.wikipedia.org/ -R pdf
Převést odkazy ve stažených souborech
Při rekurzivním stahování souborů wget stáhne soubory a uloží je beze změny. Stažené webové stránky budou stále obsahovat odkazy směřující na web, což znamená, že tuto kopii nemůžete použít pro offline použití. Naštěstí má wget funkci převodu odkazů – převádí odkazy na webové stránce na místní odkazy. Chcete-li použít tuto funkci, použijte -k
přepněte takto:
wget -k -r https://en.wikipedia.org/
Nastavte záhlaví a řetězce uživatelského agenta
HTTP klienti (jako prohlížeče a nástroje jako wget) odesílají „řetězec user-agent“ jako součást HTTP hlaviček, které identifikují klienta. Mnoho webmasterů blokuje wget tím, že nakonfiguruje svůj server tak, aby blokoval požadavky obsahující "wget" v tomto řetězci. Chcete-li to obejít, můžete přepsat řetězec user-agent wget vlastním; jako ten, který používá váš prohlížeč. Chcete-li zjistit uživatelského agenta svého prohlížeče, navštivte web jako echo.opera.com. Zkopírujte uživatelského agenta ze stránky a spusťte wget s -U
Přepínač:
wget <url> -U "<user-agent-string>"
Pokud například používáte počítač Mac, příkaz vypadá asi takto:
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"
Pokud jste vývojář, který testuje funkčnost svého webu, možná budete muset sdělit wget, aby předával různé HTTP hlavičky. Můžete to udělat pomocí --header
Přepínač. Chcete-li například odeslat X-Foo
V záhlaví s hodnotou 123 spusťte následující příkaz:
wget <url> --header "X-Foo: 123"
Pokud chcete nastavit více vlastních záhlaví, můžete použít --header
přepínejte tak často, jak je potřeba.
Stáhnout chráněné soubory
V příkladech jsme se zatím zabývali stahováním veřejně dostupných souborů. Mohou však nastat situace, kdy potřebujete stáhnout soubory z webu chráněného přihlášením. V těchto situacích můžete použít rozšíření prohlížeče, jako je CurlWget (Chrome) nebo collect (Firefox). Když se pokusíte stáhnout soubor, tato rozšíření vygenerují úplný příkaz wget, který můžete použít ke stažení souboru. V tomto článku se budeme zabývat pouze CurlWgetem, i když cliget funguje podobným způsobem.
Jakmile budete mít CurlWget nainstalovaný v Chrome, přejděte do nastavení rozšíření a změňte možnost nástroje z „curl“ na „wget“. Poté přejděte do nastavení stahování (nabídka se třemi tečkami> Nastavení> Upřesnit) a vyberte možnost „Před stažením se zeptat, kam uložit každý soubor“.
Dále zkuste stáhnout soubor z Chromu. Zavřete dialogové okno s dotazem na umístění stahování a klikněte na ikonu CurlWget na panelu nástrojů. Získáte tak příkaz wget s user-agent, cookie a dalšími hlavičkami nastavenými, jak je uvedeno níže:
Nyní můžete zkopírovat a vložit tento příkaz do okna terminálu a stáhnout soubor. To je mimořádně užitečné v situacích, kdy potřebujete stáhnout soubor chráněný přihlášením na bezhlavý server.
Režim Wget „Spider“
Wget má funkci "web spider", která načítá stránky, ale neukládá je. To je užitečné, když potřebujete zkontrolovat nefunkční odkazy na webu. Chcete-li tuto možnost správně používat, musíte také povolit „rekurzivní stahování“, které umožní wgetu skenovat dokument a hledat odkazy na procházení.
Pokud chcete skenovat https://example.com/
, Spustit:
wget --spider -r https://example.com/
Poté, co wget načte všechny odkazy, zobrazí všechny nefunkční odkazy, jak je uvedeno:
Tento protokol můžete také uložit do souboru s -o
Možnost:
wget --spider -r https://example.com -o wget.log
Později můžete pomocí grep vyhledat v protokolu konkrétní stavové kódy nebo soubory. Chcete-li například na svém webu najít přesměrování 301, můžete použít:
grep -B 301 wget.log

Jak nainstalovat Chamilo na CentOS 7

Jak nainstalovat ClamAV na CentOS 6

Jak vytvářet, obnovovat a odstraňovat snímky obrazů virtuálních strojů v RedHat Virtualization