Stažení souborů z CLI pomocí cURL a Wget

28.01.2024 Mac #curl #wget

Webové prohlížeče nejsou jedinými nástroji, které ke stahování souborů používají HTTP. Nástroje příkazového řádku, jako je cURL a Wget, mohou stahovat prostředky, jako jsou obrazy virtuálních počítačů, konfigurační soubory a aktualizace.


Proces prohlížení webových stránek je záležitostí stahování souborů, které prohlížeč následně interpretuje. Z tohoto pohledu je HTTP jen další funkcí přenosu souborů, jako je FTP. Jaké jsou další nástroje podporující podobné přenosy souborů z webových serverů nebo jiných vzdálených systémů? Odpověď zahrnuje cURL a Wget.

CURL i Wget jsou nástroje pro nahrávání nebo stahování souborůZatímco mnoho uživatelů dává přednost jednomu nástroji před druhým, každý má své silné a slabé stránky.

Tento článek ukazuje možnosti cURL a Wget, poskytuje příklady syntaxe, navrhuje případy použití a upozorňuje na výhody každého z nich. Tyto nástroje jsou většinou na systémech Linux, ale správci sítě je mohou používat také na Windows a macOS.

Co je cURL?

Nástroj URL klienta (cURL) je flexibilní a umožňuje přenos souborů do a ze vzdálených systémů pomocí široké škály protokolů.

Než se podíváme na základní syntaxi, začněme instalací cURL.

Instalace cURL

Mnoho distribucí Linuxu se dodává s předinstalovaným cURL. V případě potřeby jej přidejte pomocí systémového správce balíčků.

Na Red Hat a podobných distribucích použijte následující příkaz:

dnf install curl

Uživatelé distribucí odvozených z Debianu mohou spustit následující příkaz:

apt install curl

Většina počítačů Mac již má cURL, ale uživatelé jej mohou přidat nebo upgradovat pomocí Brew zadáním následujícího příkazu:

brew install curl

Uživatelé Windows mohou přidat cURL do svých systémů spuštěním sestavení zde. Všimněte si, že Windows 10 a 11 již obsahují cURL.

Uživatelé mohou také potřebovat přidat knihovnu libcurl do těchto systémů, pokud cURL není standardně nainstalováno.

Základní syntaxe cURL

Většina uživatelů příkazového řádku zná základní syntaxi cURL. Zadejte příkaz, za ním jednu nebo více možností a cestu k souboru ke stažení.

curl -options /cesta/k/souboru

Uživatelé mohou také určit protokol, jak je uvedeno v další části. Výchozí protokol je HTTP.

Stažení souboru pomocí cURL

Dvě primární možnosti pro stahování souborů pomocí příkazu curl jsou -o a -O. Volba -o uloží soubor do umístění určeného uživateli s určeným názvem. Volba -O uloží soubor do aktuálního umístění s aktuálním názvem souboru.

Předpokládejme například, že uživatel chce stáhnout soubor s názvem project.pdf z fiktivního webu s názvem project-products.com. PDF je uloženo ve složce s názvem 2023. Počáteční příkaz vypadá takto:

curl -O http://project-products.com/2023/projects.pdf

CURL stáhne soubor do aktuálního pracovního adresáře uživatele – zadejte příkaz pwd pro kontrolu umístění – a pojmenuje jej project.pdf.

Uživatel však mohl soubor během přenosu přejmenovat a umístit jej do určitého adresáře pomocí volby -o. Zde je návod, jak by mohl příkaz vypadat, pokud by uživatel chtěl dát souboru nový název a uložit jej do adresáře cílů v domovské složce:

curl -o /home/user/goals/new-projects.pdf http://project-products.com/2023/projects.pdf

Uživatelé pravděpodobně chtějí stáhnout více než jeden soubor z tohoto webu. Předpokládejme, že uživatel má původní scénář, ale potřebuje získat dva PDF místo projects.pdf. Příkaz může vypadat následovně:

curl -O http://project-products.com/2023/projects1.pdf -O http://project-products.com/2023/projects2.pdf

Jednou ze silných stránek cURL je široká škála protokolů, které podporuje. FTP je efektivnější při přenosu velkých souborů, takže uživatelé jej mohou chtít používat spíše než HTTP. Stačí zadat protokol v cestě pomocí následujícího příkazu:

curl -u uživatelské jméno:heslo -O ftp://project-products.com/2023/projects.pdf

FTP může vyžadovat ověření, takže pomocí volby -u zadejte uživatelské jméno a heslo, které vzdálený systém rozpozná.

Nahrajte soubor s cURL

Uživatelé mohou také nahrávat soubory do vzdáleného umístění pomocí cURL. To může být užitečné u souborů protokolu nebo jiných přenosů.

Volba -d identifikuje přenos jako přenos HTTP POST. Přidejte místní cestu k souboru odesílanému na vzdálený server a poté přidejte adresu vzdáleného serveru. Následující příkaz odešle projects.pdf do zadaného adresáře na HTTP serveru:

curl -d @projects.pdf http://project-products.com/uploads

Použijte stejnou syntaxi pro FTP upload, ale změňte protokol, jak je vidět zde:

curl -d @projects.pdf ftp://project-products.com/uploads

Další možnosti cURL

CURL je flexibilní nástroj, který má mnoho možností, jak pokrýt potřeby uživatelů. Zde je několik dalších příkladů méně běžných funkcí.

Volba --compressed požaduje, aby byl přenos komprimován ve zdroji a dekomprimován v cíli. Tuto možnost použijte, když je omezená šířka pásma.

Pomocí volby -C obnovíte přenos souborů, který byl přerušen výpadkem sítě, napájení nebo něčím podobným. Tato možnost pokračuje v přenosu pomocí stávajícího názvu souboru, nikoli v jeho duplikování.

Mezi výhody CURL patří následující:

  • Podporuje mnoho protokolů.
  • Dostupné pro mnoho platforem.
  • Přenáší soubory nahoru a dolů.
  • Podporuje možnosti komprese.

Manuální přenosy souborů, jako jsou ty popsané výše, jsou jistě možností. Představte si však potenciál přidání příkazu curl do skriptu.

Option Description
-O Stáhnout zdroje do aktuálního adresáře.
-o Stáhnout zdroje do zadaného adresáře.
-u Zadejte uživatelské jméno a heslo pro FTP.
-d Upload souboru.
--compressed Komprese.
-C Obnovte přerušený přenos.

Co je Wget?

Nástroj Wget má ve srovnání s cURL specifičtější účel. Je určen pro stahování souborů z webových serverů pomocí nejběžnějších protokolů: HTTP, HTTPS, FTP a FTPS. Uživatelé mohou načíst jednotlivé soubory, skupiny souborů nebo dokonce archivy tar.

Instalace Wget

U Wget je méně pravděpodobné, že bude předinstalován v systému Linux než cURL. Systémy Windows a macOS jej také ve výchozím nastavení neobsahují. Na tyto a další platformy je snadné přidat Wget.

Na počítači se systémem Linux přidejte Wget pomocí správce balíčků systému.

Na Red Hat a podobných distribucích použijte následující příkaz:

dnf install wget

Uživatelé distribucí odvozených z Debianu mohou místo toho zadat následující příkaz:

apt install wget

Přidejte nebo upgradujte Wget na Macu pomocí Brew zadáním následujícího:

brew install wget

Uživatelé Windows si stáhnou spustitelný soubor Wget (wget.exe). Chcete-li však aplikaci spustit, umístěte Wget do vybrané složky a přidejte tuto složku do proměnné prostředí PATH. Další alternativou je umístit jej do adresáře C:\Windows\System32, i když to není považováno za nejlepší postup.

Základní syntaxe příkazu Wget

Začněme jednoduchým cílem stažení souboru z webu – možná nejnovější verze aplikace, bitové kopie virtuálního počítače, souboru Dockerfile, konfiguračního souboru nebo archivu. V současné době mnoho prodejců zpřístupňuje nejnovější verzi svých produktů jako jednoduché stažení po konzistentní cestě.

Syntaxe je následující:

command -options path

Základní stažení z webu vypadá takto:

wget http://project-products.com/2023/projects.pdf

Wget stáhne PDF do aktuálního adresáře.

Ve výchozím nastavení Wget stahuje soubory z konkrétní adresy URL a umísťuje je do aktuálního pracovního adresáře. Uživatelé mohou určit jiné cílové umístění pomocí volby -P následované složkou pro uložení staženého souboru.

Chcete-li například načíst soubor z webu a umístit jej do adresáře /projects/updates, zadejte následující:

wget -P /projects/updates http://project-products.com/2023/projects.pdf

Tato možnost je užitečná, pokud uživatelé skriptují Wget tak, aby vytáhl více souborů a umístil je na jiné místo, než kde se nachází samotný skript.

Wget normálně používá původní název cílového souboru, ale uživatelé mohou soubor během stahování přejmenovat spuštěním volby -O. Takto vypadá příkaz:

wget -O 2023projects.pdf http://project-products.com/2023/projects.pdf

Tato možnost usnadňuje sledování obsahu načtených souborů, když se používají pro zdroje obecné názvy, jako je lastest.doc nebo current.zip.

Jednou zvláště užitečnou funkcí Wget je možnost zadat více cílových stránek v textovém souboru. Wget pak může zpracovat soubor a získat zdroje z každého webu. Použijte volbu -i k označení vstupního souboru.

Obsah textového souboru retrieve -resources.txt může vypadat takto:

http://project-products.com/2023/projects.pdf 
http://project-products.com/2022/archive_projects.zip 
http://project-products.com/2023/resources.tar.gz

K odkazu na soubor a stažení zadaných zdrojů použijte následující příkaz:

wget -i retrieve-resources.txt

Použijte Wget s FTP

Zatímco předpokládaný protokol je HTTP nebo HTTPS, uživatelé mohou zadat FTP pro připojení k FTP serverům pro stahování souborů. Připomeňme, že FTP vyžaduje určitý druh ověřování, takže uživatelé musí zadat uživatelské jméno a heslo, které rozpozná vzdálený FTP server, jak je vidět zde:

wget --ftp-user=NAME --ftp-password=PASSWORD ftp://project-products/2023/projects.pdf

Při vkládání citlivých ověřovacích informací do textového souboru buďte opatrní. Před voláním stahování FTP v textových souborech pomocí volby -i uvedené výše pečlivě zvažte možnosti.

Jednou ze silných stránek Wgetu je jeho síla a flexibilita při rekurzivním získávání souborů ze zdrojového webového serveru. Má mnoho možností a kombinací vlajek. Základní rekurzivní příkaz -r je níže - předpokládejme, že adresář 2023 obsahuje mnoho souborů:

wget -r http://project-products.com/2023/

Uživatelé mohou chtít přidat volbu -np, jinak Wget stáhne nadřazený adresář a jeho obsah. Upravte výše uvedený příkaz na následující:

wget -np -r http://project-products.com/2023/

Existují další možnosti pro určení úrovně rekurzivního načítání nebo počtu podadresářů, které se mají načíst. Další příznaky umožňují uživatelům vyloučit soubory, které nechtějí stahovat.

Volba Popis
-R název souboru Zadejte soubor, který chcete vyloučit z načítání.
-l(číslo) Určete počet úrovní, ze kterých chcete rekurzivně načíst, nahrazením (číslo) určitým počtem úrovní.

Následující tabulka uvádí přehled primárních možností diskutovaných výše.

Volba Popis
(žádná možnost) Stáhněte zadaný soubor do aktuálního adresáře.
-P Zadejte cílový adresář odlišný od aktuálního adresáře.
Zadejte nový název souboru pro načtený soubor.
-i Získejte seznam souborů k načtení ze zadaného textového souboru.

Další možnosti Wget

Uživatelům mohou být v konkrétních případech užitečné následující další možnosti.

Nastavte přenos souborů Wget tak, aby běžel na pozadí pomocí volby -b. Pokud je stahování časově náročné, zkontrolujte soubor protokolu pomocí druhého příkazu uvedeného níže:

wget -b http://project-products.com/2023/vm-image-lastest.iso 
tail -f wget -log

Wget je starší nástroj z dob méně spolehlivých síťových připojení. Jednou z funkcí je jeho schopnost opakovat přerušené pokusy o stahování. Výchozí hodnota opakování je 20, ale uživatelé mohou tuto hodnotu upravit pomocí volby --tries=. Nastavte jej na 0inf (nekonečno) nebo cokoliv mezi tím, jak je vidět zde:

wget --tries=42 http://project-products.com/2023/projects.pdf

Podobně použijte volbu -c pro pokračování přerušeného stahování. Pokud se stahování musí restartovat kvůli přerušení, nový soubor má k názvu souboru připojen .1, protože původní pokus o soubor již existuje.

wget -c http://project-products.com/2023/ vm-image-latest.iso

Další starostí s velkými soubory je kontrola spotřeby šířky pásma. Nastavte Wget tak, aby spotřebovával pouze část dostupné šířky pásma pomocí volby --limit-rate=. Limit 750 kB vypadá takto:

wget --limit-rate=750k http://project-products.com/2023/ vm-image-latest.iso

Existují různé další možnosti Wget, ale pro začátek to stačí.