cURL vs. wget unter Linux: Was ist der Unterschied?

Veröffentlicht: 2022-07-13
Linux-Laptop mit einer Bash-Eingabeaufforderung
fatmawati achmad zaenuri/Shutterstock.com

Wenn Sie eine Gruppe von Linux-Benutzern fragen, womit sie Dateien herunterladen, werden einige sagen wget und andere cURL . Was ist der Unterschied und ist einer besser als der andere?

Es begann mit Konnektivität

Regierungsforscher begannen bereits in den 1960er Jahren damit, verschiedene Netzwerke miteinander zu verbinden, was zu miteinander verbundenen Netzwerken führte. Aber die Geburt des Internets, wie wir es kennen, fand am 1. Januar 1983 statt, als das TCP/IP-Protokoll implementiert wurde. Das war das fehlende Glied. Es ermöglichte unterschiedlichen Computern und Netzwerken, über einen gemeinsamen Standard zu kommunizieren.

1991 veröffentlichte CERN seine World Wide Web-Software, die es einige Jahre lang intern verwendet hatte. Das Interesse an dieser visuellen Überlagerung für das Internet war sofort und weit verbreitet. Ende 1994 gab es 10.000 Webserver und 10 Millionen Benutzer.

Wie funktioniert das Internet?
RELATED Wie funktioniert das Internet?

Diese beiden Meilensteine ​​– das Internet und das Web – repräsentieren sehr unterschiedliche Gesichter der Konnektivität. Aber sie teilen auch viele der gleichen Funktionen.

Konnektivität bedeutet genau das. Sie stellen eine Verbindung zu einem entfernten Gerät her, z. B. einem Server. Und Sie verbinden sich damit, weil es etwas gibt, das Sie brauchen oder wollen. Aber wie rufen Sie diese remote gehostete Ressource über die Linux-Befehlszeile auf Ihren lokalen Computer ab?

1996 wurden zwei Dienstprogramme entwickelt, mit denen Sie remote gehostete Ressourcen herunterladen können. Sie sind wget , das im Januar veröffentlicht wurde, und cURL , das im Dezember veröffentlicht wurde. Beide arbeiten auf der Linux-Befehlszeile. Beide stellen eine Verbindung zu Remote-Servern her und rufen beide Daten für Sie ab.

Aber dies ist nicht nur der übliche Fall, bei dem Linux zwei oder mehr Tools bereitstellt, um dieselbe Aufgabe zu erledigen. Diese Dienstprogramme haben unterschiedliche Zwecke und unterschiedliche Spezialisierungen. Das Problem ist, dass sie ähnlich genug sind, um Verwirrung darüber zu stiften, welches man wann verwenden soll.

Stellen Sie sich zwei Chirurgen vor. Sie möchten wahrscheinlich weder einen Augenchirurgen, der Ihre Herz-Bypass-Operation durchführt, noch möchten Sie, dass der Herzchirurg Ihre Kataraktoperation durchführt. Ja, sie sind beide hochqualifizierte Mediziner, aber das bedeutet nicht, dass sie sich gegenseitig ersetzen.

Dasselbe gilt für wget und cURL .

Unterschiedliche Zwecke, unterschiedliche Funktionen, einige überschneiden sich

Das „w“ im wget -Befehl ist ein Indikator für den beabsichtigten Zweck. Sein Hauptzweck ist das Herunterladen von Webseiten – oder sogar ganzen Websites. Seine man beschreibt es als ein Dienstprogramm zum Herunterladen von Dateien aus dem Web unter Verwendung der HTTP-, HTTPS- und FTP-Protokolle.

Im Gegensatz dazu arbeitet cURL mit 26 Protokollen, darunter SCP, SFTP und SMSB sowie HTTPS. Die man besagt, dass es sich um ein Tool zum Übertragen von Daten zu oder von einem Server handelt. Es ist nicht speziell auf die Arbeit mit Websites zugeschnitten. Es ist für die Interaktion mit Remote-Servern gedacht, wobei eines der vielen unterstützten Internetprotokolle verwendet wird.

wget ist also überwiegend website-zentriert, während cURL etwas ist, das auf einer tieferen Ebene operiert, auf der Plain-Vanilla-Internetebene.

wget kann Webseiten abrufen und rekursiv durch ganze Verzeichnisstrukturen auf Webservern navigieren, um ganze Websites herunterzuladen. Es ist auch in der Lage, die Links in den abgerufenen Seiten so anzupassen, dass sie korrekt auf die Webseiten auf Ihrem lokalen Computer zeigen und nicht auf ihre Gegenstücke auf dem entfernten Webserver.

Mit cURL können Sie mit dem Remote-Server interagieren. Es kann Dateien hochladen und abrufen. cURL funktioniert mit SOCKS4- und SOCKS5-Proxies und HTTPS zum Proxy. Es unterstützt die automatische Dekomprimierung komprimierter Dateien in den Formaten GZIP, BROTLI und ZSTD. cURL können Sie auch mehrere Übertragungen parallel herunterladen.

Die Überschneidung zwischen ihnen besteht darin, dass Sie mit wget und cURL Webseiten abrufen und FTP-Server verwenden können.

Es ist nur eine grobe Metrik, aber Sie können die relativen Funktionssätze der beiden Tools einschätzen, indem Sie sich die Länge ihrer man ansehen. Auf unserer Testmaschine ist die Manpage für wget 1433 Zeilen lang. Die man für cURL umfasst satte 5296 Zeilen.

Ein kurzer Blick auf wget

Da wget Teil des GNU-Projekts ist, sollte es auf allen Linux-Distributionen vorinstalliert sein. Die Verwendung ist einfach, insbesondere für die häufigsten Verwendungszwecke: das Herunterladen von Webseiten oder Dateien.

Verwenden Sie einfach den Befehl wget mit der URL zur Webseite oder Remote-Datei.

 wget https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

Herunterladen eines Word-Dokuments mit wget

Die Datei wird abgerufen und unter ihrem ursprünglichen Namen auf Ihrem Computer gespeichert.

Ausgabe des Befehls wget, der ein Word-Dokument herunterlädt

Um die Datei unter einem neuen Namen zu speichern, verwenden Sie die Option -O (Ausgabedokument).

 wget -O word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

Herunterladen einer Datei mit wget und Speichern unter einem neuen Namen

Die abgerufene Datei wird unter dem von uns gewählten Namen gespeichert.

Die heruntergeladene Datei wird in den in der Befehlszeile angegebenen Namen umbenannt

Verwenden Sie beim Abrufen von Websites nicht die Option -O . Wenn Sie dies tun, werden alle abgerufenen Dateien zu einer angehängt.

Um eine ganze Website abzurufen, verwenden Sie die Option -m (Spiegelung) und die URL der Homepage der Website. Sie sollten auch --page-requisites verwenden, um sicherzustellen, dass alle unterstützenden Dateien, die zum ordnungsgemäßen Rendern der Webseiten erforderlich sind, ebenfalls heruntergeladen werden. Die Option --convert-links passt Links in der abgerufenen Datei so an, dass sie auf die richtigen Ziele auf Ihrem lokalen Computer statt auf externe Speicherorte auf der Website verweisen.

VERWANDT: Verwendung von wget, dem ultimativen Befehlszeilen-Download-Tool

Ein kurzer Blick auf cURL

cURL ist ein unabhängiges Open-Source-Projekt. Es ist auf Manjaro 21 und Fedora 36 vorinstalliert, musste aber auf Ubuntu 21.04 installiert werden.

Dies ist der Befehl zum Installieren von cURL unter Ubuntu.

 sudo apt install curl 

cURL auf Ubuntu installieren

Um dieselbe Datei wie bei wget herunterzuladen und unter demselben Namen zu speichern, müssen wir diesen Befehl verwenden. Beachten Sie, dass die Option -o (Ausgabe) mit cURL in Kleinbuchstaben geschrieben wird.

 curl -o word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

Herunterladen einer Datei mit cURL und Speichern unter einem neuen Namen

Die Datei wird für uns heruntergeladen. Während des Downloads wird ein ASCII-Fortschrittsbalken angezeigt.

Die Datei wird heruntergeladen und unter dem in der Befehlszeile angegebenen Namen gespeichert

Um sich mit einem FTP-Server zu verbinden und eine Datei herunterzuladen, verwenden Sie die Option -u (user) und geben Sie ein Paar aus Benutzername und Passwort an, wie hier:

 curl -o test.png -u demo:password ftp://test.rebex.net/pub/example/KeyGenerator.png 

Herunterladen einer Datei von einem FTP-Server mit cURL

Dadurch wird eine Datei von einem Test-FTP-Server heruntergeladen und umbenannt.

Ein erfolgreicher Download von einem FTP-Server mit cURL

VERWANDT: So verwenden Sie curl zum Herunterladen von Dateien von der Linux-Befehlszeile

Es gibt kein Bestes

Es ist unmöglich zu antworten „Welches soll ich verwenden“ ohne zu fragen „Was versuchst du zu tun?“

Sobald Sie verstehen, was wget und cURL tun, werden Sie feststellen, dass sie nicht im Wettbewerb stehen. Sie erfüllen nicht die gleiche Anforderung und versuchen nicht, die gleiche Funktionalität bereitzustellen.

Beim Herunterladen von Webseiten und Websites liegt die Überlegenheit von wget . Wenn Sie das tun, verwenden Sie wget . Verwenden Sie für alles andere – zum Beispiel Hochladen oder die Verwendung eines der zahlreichen anderen Protokolle – cURL .