Použití cURL ke stažení vzdálených souborů z příkazového řádku
Obsah:
- Stáhnout soubory přesné shody s curl -O
- Uložení vzdáleného souboru s jiným názvem pomocí curl -o
- Stahování více souborů současně pomocí curl
Výkonný nástroj příkazového řádku curl lze použít ke stažení souborů z téměř jakéhokoli vzdáleného serveru. Dlouholetí uživatelé příkazového řádku vědí, že to může být užitečné pro širokou škálu situací, ale aby to bylo jednoduché, mnozí zjistí, že stažení souboru s curl může být často rychlejší alternativou k použití webového prohlížeče nebo FTP klienta ze strany GUI. Mac OS X (nebo linux).To je užitečné pro místní situace, ale má to zvláštní význam, pokud jste v situaci, kdy potřebujete něco stáhnout do vzdáleného Macu, když jste připojeni přes SSH.
Pro účely tohoto návodu se zaměříme především na stahování souborů ze dvou běžně používaných protokolů HTTP a SFTP, i když je třeba poznamenat, že cURL podporuje mnohem více protokolů. Přestože se curl snadno používá, doporučuje se mít určitou znalost příkazového řádku.
Stáhnout soubory přesné shody s curl -O
Použití velkého znaku -O s curl stáhne soubor ze vzdáleného serveru při zachování přesného názvu souboru, základní syntaxe pro toto je následující:
curl -O
To znamená, že pokud je zadaný soubor URL pojmenován „sample.zip“, stáhne se s názvem „sample.zip“ a pokud je soubor pojmenován něco obrovského a komplikovaného jako „LongExampleFileNameForOSXDaily-v- 1-3-51-revision-515b12-readme.txt“ na vzdáleném serveru, uloží se pod tímto přesným názvem na místním počítači. Delší názvy souborů se často lépe zpracovávají s příznakem -o než s příznakem -O, kterému se budeme brzy věnovat.
Běžní čtenáři si možná vzpomenou, že jsme použili příkaz curl -O, když jsme vysvětlovali, jak extrahovat skutečný zvukový obsah ze souboru streamovaného m3u.
Začátek stahování pomocí curl zobrazuje procento přenesených dat, čas strávený stahováním a zbývající čas a rychlost přenosu.
Snímek obrazovky nabízí lepší znázornění než vložený příklad níže, ale vypadá asi takto:
% Celkem % přijatých % Xferd Průměrná rychlost Čas Čas Čas Aktuální Dload Nahrání Celkem Spotřeba Levá rychlost 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142 k
Když je zobrazena přenosová rychlost, můžete přesměrovat výstup curl do /dev/null a použít jej k otestování rychlosti připojení k internetu, ale příkaz wget má snadnější čtení a sledování přenosového pruhu, takže wget je lepší vhodné pro tento úkol.
Uložení vzdáleného souboru s jiným názvem pomocí curl -o
Použití příznaku -o malým písmenem vám umožní zadat jiný název souboru pro stažený soubor, než jak je pojmenován na vzdáleném serveru. To může být užitečné pro snížení zdlouhavých názvů souborů nebo jen něco označit, aby bylo snazší je najít sami. Obecná syntaxe by byla:
curl -o
Pokud například chcete uložit soubor IPSW pro iOS, který jste našli uvedený na serverech Apple, aniž byste měli dlouhé celé jméno, můžete použít následující:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw_Restore.
Tímto se stáhne soubor „iPhone5, 3_7.0.4_11B554a_Restore.ipsw“, ale bude pojmenován kratší jako smysluplnější „iPhone5C-704.ipsw“.
Pokud nechcete soubor uložit do aktuálního pracovního adresáře, zadejte cestu jako součást názvu souboru takto:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Stahování více souborů současně pomocí curl
cURL může snadno stahovat více souborů současně, vše, co musíte udělat, je zadat více než jednu adresu URL, například:
curl -O
Pro soubory s různými názvy nebo hostované na různých serverech nebo v různých cestách adresářů použijte úplnou adresu URL, například:
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licence/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
Na druhou stranu, pokud názvy souborů ke stažení používají přírůstkové pojmenování, můžete k určení rozsahu stahování použít závorky, například:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
To by chytilo soubory fdl-1.1.txt, fd1-1.2.txt a fd1-1.3.txt všechny najednou, aniž by bylo nutné specifikovat každou jedinečnou adresu URL. Samozřejmě to funguje pouze v případě, že jsou soubory ve stejném adresáři společně a ve stejné doméně.
Ověření pomocí curl
Autentizaci můžete také předat pomocí cURL pomocí parametru -u:
curl -u user:pass -O ftp://remote_url/file-to-download.zip
Mějte na paměti, že historie bash uloží heslo jako prostý text, když použijete -u se zadaným uživatelským jménem a heslem, proto se to pro většinu situací nedoporučuje. Můžete to obejít umístěním mezery před „curl“.Pokud pro předponu příkazu nepoužíváte mezerník, pravděpodobně budete chtít později pro jistotu vyprázdnit historii příkazů.
Podporované protokoly curl a použití nad rámec HTTP a FTP
Jak již bylo zmíněno dříve, použití cURL jde daleko nad rámec HTTP a FTP, protože položka manuálové stránky curl v popisu zmiňuje další protokoly:
Dodatečně zjistíte, že curl lze také použít pro požadavky PUT a POST, soubory cookie, proxy, tunely, obnovení stahování a dokonce i získávání informací z hlavičky HTTP nebo změnu uživatelského agenta (efektivně spoofing) bez nutnosti používat vyhrazený webový prohlížeč.
Stejně jako většina nástrojů příkazového řádku se o curl můžete dozvědět mnohem více, když vyvoláte příslušnou manuálovou stránku pomocí příkazu „man curl“.