Otázka: Ke stahování souborů obvykle používám wget. Na některých systémech není wget nainstalován a je k dispozici pouze curl. Můžete mi vysvětlit jednoduchým příkladem, jak mohu stáhnout vzdálený soubor pomocí curl? Je nějaký rozdíl mezi curl a wget?
Odpověď: Na vysoké úrovni jsou wget i curl nástroje příkazového řádku, které dělají totéž.
- Oba lze použít ke stahování souborů pomocí FTP a HTTP(s).
- Požadavek HTTP POST můžete odeslat také pomocí curl a wget
- Kulder však poskytuje rozhraní API, která mohou programátoři používat v rámci vlastního kódu. curl používá libcurl, což je multiplatformní knihovna.
- wget je pouze nástroj příkazového řádku bez jakýchkoliv rozhraní API.
- Curl také podporuje mnohem více protokolů, které wget nepodporuje. Například:SCP, SFTP, TFTP, TELNET, LDAP(S), FILE, POP3, IMAP, SMTP, RTMP a RTSP.
- Používání wget má velkou výhodu. wget podporuje rekurzivní stahování, zatímco curl ne.
Příklady Wget
Následující příklad stáhne soubor a uloží jej pod stejným názvem jako vzdálený server.
wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Následující příklad stáhne soubor a uloží jej pod jiným názvem než vzdálený server. To je užitečné, když vzdálená adresa URL neobsahuje název souboru v adrese URL, jak je znázorněno v příkladu níže.
wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
Další příklady wget:Průvodce stažením Ultimate Wget s 15 úžasnými příklady
Příklady kudrlin
$ curl -O http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 28 3762k 28 1085k 0 0 72771 0 0:00:52 0:00:15 0:00:37 54267
Možnost -O (velká písmena O) je důležitá. Bez toho curl začne ukládat stažený soubor na stdout. Pomocí -O stáhne soubory se stejným názvem jako vzdálený server. Ve výše uvedeném příkladu stahujeme strx25-0.9.2.1.tar.bz2, takže stahovaný soubor bude mít také stejný název.
Místo -O můžete zadat také „–vzdálené-jméno“, jak je uvedeno níže. Obě jsou stejné.
$ curl --remote-name http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Během stahování curl poskytuje následující užitečné informace:
- % – celkové % stahování, které bylo dosud dokončeno. Když se dostane na 100%, stahování je dokončeno. Ve výše uvedeném příkladu stáhl pouze 28 % souboru.
- Celkem – celková velikost souboru
- Přijato – celková velikost souboru, který byl dosud stažen. Ve výše uvedeném příkladu si zatím stáhlo 1085 kB (z celkových 3762 kB)
- Xferd – použije se při odesílání některých souborů na vzdálený server. Během nahrávání to bude indikovat celkovou velikost souboru, který byl dosud nahrán. Protože stahujeme soubor, v tomto příkladu je to 0.
- Průměrná rychlost stahování – Udává průměrnou rychlost stahování.
- Průměrná rychlost odesílání – Při odesílání souboru to bude indikovat průměrnou rychlost odesílání
- Celková doba – Udává celkovou dobu, kterou bude trvat stažení (nebo nahrání) celého souboru na základě aktuální rychlosti stahování (nebo odesílání). V tomto příkladu bude stažení tohoto souboru trvat celkem přibližně 52 sekund.
- Čas strávený – Čas, který dosud strávil stahováním (nebo nahráváním) souboru. V tomto příkladu to zatím strávilo 15 sekund.
- Zbývající čas – vypočítává se na základě „celkového času“ – „času stráveného“.
- Aktuální rychlost – Udává aktuální rychlost stahování/odesílání. Porovnejte tuto hodnotu s průměrnou rychlostí stahování/načítání, abyste viděli, jak rychle nebo pomalu se váš systém aktuálně stahuje.
Pokud chcete soubor stáhnout a uložit pod jiným názvem, než je název souboru na vzdáleném serveru, použijte -o (malá písmena o), jak je uvedeno níže. To je užitečné, když vzdálená adresa URL neobsahuje název souboru v adrese URL, jak je znázorněno v příkladu níže.
$ curl -o taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 50243 100 50243 0 0 170k 0 --:--:-- --:--:-- --:--:-- 400k
Ve výše uvedeném příkladu není ve vzdálené adrese URL žádný název souboru, pouze volá php skript, který mu předá nějaký parametr. Soubor však bude stažen a uložen jako taglist.zip ve vašem místním systému. Místo -o můžete také zadat "–output".
Další příklady curl:15 praktických příkladů příkazů cURL pro Linux