cURL i wget w Linuksie: jaka jest różnica?
Jeśli zapytasz grupę użytkowników Linuksa, czego używają do pobierania plików, niektórzy powiedzą, wget
a inni powiedzą cURL
. Jaka jest różnica i czy jedno jest lepsze od drugiego?
Wszystko zaczęło się od połączenia
Naukowcy rządowi zaczęli łączyć ze sobą różne sieci już w latach 60. XX wieku, co zaowocowało połączonymi sieciami. Ale narodziny Internetu, jaki znamy, miały miejsce 1 stycznia 1983 roku, kiedy wdrożono protokół TCP/IP. To było brakujące ogniwo. Umożliwiło to różnym komputerom i sieciom komunikowanie się przy użyciu wspólnego standardu.
W 1991 roku CERN wydał swoje oprogramowanie dla sieci WWW, z którego korzystali wewnętrznie przez kilka lat. Zainteresowanie tą wizualną nakładką do sieci było natychmiastowe i powszechne. Pod koniec 1994 roku istniało 10 000 serwerów internetowych i 10 milionów użytkowników .
Te dwa kamienie milowe – Internet i World Wide Web – reprezentują bardzo różne strony łączności. Ale mają też wiele takich samych funkcji.
Komunikacja oznacza właśnie to. Łączysz się z jakimś zdalnym urządzeniem, takim jak serwer. I łączysz się z nim, ponieważ ma na sobie coś, czego potrzebujesz lub chcesz. Ale jak uzyskać ten zdalnie hostowany zasób na maszynę lokalną z wiersza poleceń systemu Linux?
W 1996 roku pojawiły się dwa narzędzia, które pozwalały pobierać zdalnie hostowane zasoby. To ta wget
, która ukazała się w styczniu, a cURL
która ukazała się w grudniu. Oba działają w wierszu poleceń systemu Linux. Obydwa łączą się ze zdalnymi serwerami i oba pobierają dla Ciebie dane.
Ale to nie tylko zwykły przypadek, że Linux dostarcza dwa lub więcej narzędzi do wykonania tej samej pracy. Te narzędzia mają różne cele i różne specjalizacje. Problem polega na tym, że są na tyle podobne, że powodują zamieszanie co do tego, którego użyć i kiedy.
Rozważ dwóch chirurgów. Prawdopodobnie nie chcesz, aby chirurg okulista wykonał na tobie operację pomostowania aortalno-wieńcowego, ani nie chcesz, aby kardiochirurg wykonał na tobie operację zaćmy. Tak, obaj są wysoko wykwalifikowanymi lekarzami, ale to nie znaczy, że mogą się nawzajem zastępować.
To samo dotyczy wget
i cURL
.
Różne cele, różne funkcje, niektóre nakładają się
Litera „w” w wget
poleceniu wskazuje na jego cel. Jego głównym celem jest ładowanie stron internetowych lub nawet całych witryn internetowych. Jego man
strona opisuje go jako narzędzie do pobierania plików z Internetu za pomocą protokołów HTTP, HTTPS i FTP.
Wręcz przeciwnie, cURL
działa z 26 protokołami, w tym SCP, SFTP i SMSB, a także HTTPS. Jego man
strona mówi, że jest to narzędzie do przesyłania danych do lub z serwera. Nie jest specjalnie zaprojektowany do pracy ze stronami internetowymi. Jest przeznaczony do komunikacji ze zdalnymi serwerami przy użyciu dowolnego z wielu obsługiwanych protokołów internetowych.
Jest więc wget
głównie zorientowany na stronę internetową, cURL
podczas gdy działa na głębszym poziomie, na poziomie zwykłego waniliowego Internetu.
wget
może pobierać strony internetowe i może rekursywnie nawigować po całych strukturach katalogów na serwerach internetowych w celu pobrania całych witryn internetowych. Może również ustawić łącza na pobranych stronach, aby poprawnie wskazywały strony internetowe na komputerze lokalnym, a nie ich odpowiedniki na zdalnym serwerze internetowym.
cURL
pozwala na interakcję ze zdalnym serwerem. Może pobierać pliki, a także je wyodrębniać. cURL
współpracuje z serwerami proxy SOCKS4 i SOCKS5, a HTTPS z serwerami proxy. Obsługuje automatyczną dekompresję skompresowanych plików w formatach GZIP, BROTLI i ZSTD. cURL
umożliwia także równoległe pobieranie wielu transferów.
Nakładanie się tych dwóch polega na tym, że wget
oba cURL
pozwalają uzyskać strony internetowe i korzystać z serwerów FTP.
To tylko przybliżona metryka, ale możesz uzyskać pewne pojęcie o względnych zestawach funkcji tych dwóch narzędzi, patrząc na długość ich man
stron. Na naszej maszynie testowej strona podręcznika wget
użytkownika ma 1433 wierszy. Strona ma man
aż cURL
5296 linijek.
Szybkie spojrzenie na wget
Ponieważ wget
jest to część projektu GNU , powinieneś znaleźć go preinstalowany we wszystkich dystrybucjach Linuksa. Jest łatwy w użyciu, zwłaszcza do najczęstszych zastosowań: pobierania stron internetowych lub plików.
Wystarczy użyć wget
polecenia z adresem URL strony internetowej lub pliku zdalnego.
wget https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc
Plik zostanie wyodrębniony i zapisany na komputerze pod oryginalną nazwą.
Aby zapisać plik pod nową nazwą, użyj opcji -O
(dokument wyjściowy).
wget -O word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc
Wynikowy plik jest zapisywany pod wybraną przez nas nazwą.
Nie używaj tej -O
opcji podczas wyszukiwania stron internetowych. Jeśli to zrobisz, wszystkie wyodrębnione pliki zostaną dodane do jednego.
Aby uzyskać całą witrynę, użyj parametru -m
(mirror) i adresu URL strony głównej witryny. Możesz również użyć --page-requisites
, aby upewnić się, że wszystkie pliki pomocnicze wymagane do prawidłowego wyświetlania stron internetowych są również załadowane. To --convert-links
ustawienie konfiguruje łącza w pliku wynikowym tak, aby wskazywały prawidłowe miejsca docelowe na komputerze lokalnym, a nie zewnętrzne lokalizacje w witrynie internetowej.
Szybkie spojrzenie na cURL
cURL
jest niezależnym projektem open source. Jest preinstalowany na Manjaro 21 i Fedorze 36, ale musi być zainstalowany na Ubuntu 21.04.
To jest polecenie instalacji cURL na Ubuntu.
sudo apt install curl
Aby załadować ten sam plik co w wget
i zapisać go pod tą samą nazwą, musimy użyć tego polecenia. Zauważ, że -o
opcja (exit) jest zapisywana małymi literami z cURL
.
curl -o word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc
Plik został dla nas pobrany. Podczas pobierania wyświetlany jest pasek postępu ASCII.
Aby połączyć się z serwerem FTP i przesłać plik, użyj opcji -u
(użytkownik) i określ parę nazwa użytkownika/hasło, w następujący sposób:
curl -o test.png -u demo:password ftp://test.rebex.net/pub/example/KeyGenerator.png
Spowoduje to pobranie i zmianę nazwy pliku z testowego serwera FTP.
Nie ma lepszego
Nie da się odpowiedzieć „Którego powinienem użyć” bez pytania „Co próbujesz zrobić?”
Kiedy zrozumiesz, co wget
i co cURL
robić, zrozumiesz, że nie konkurują. Nie spełniają tych samych wymagań i nie starają się zapewnić tej samej funkcjonalności.
Wczytywanie stron internetowych i witryn internetowych to wget
podstawa doskonałości. Jeśli to właśnie robisz, użyj wget
. Do wszystkiego innego — na przykład pobierania lub korzystania z wielu innych protokołów — używaj cURL
.
Dodaj komentarz