Der Befehl wget
Der Befehl wget wird für das Herunterladen von Dateien aus dem Internet verwendet. Unterstützt werden die Protokolle HTTP, HTTPS und FTP. Außerdem kann der Befehl auch Dateien über HTTP Proxys abrufen. Neben der einfachen Verwendung als Downloadmanager kann wget jedoch auch in vielen anderen Bereichen Anwendung finden. So kann er beispielsweise in Shell-Skripten verwendet- und ohne jegliche Benutzerinteraktion im Hintergrund ausgeführt werden.
In diesem Beitrag lernen Sie die wichtigsten Grundlagen, sowie wichtige Funktionen und Optionen des Befehls kennen.
Installation
Wget ist unter den meisten UNIX-/Linux-Betriebssystemen standardmäßig vorinstalliert. Falls dies bei Ihnen jedoch nicht der Fall sein sollte, dann können Sie ihn auch mit dem gleichnamigen Paket nachinstallieren. Verwenden Sie dazu den folgenden Befehl:
apt-get install wget
Wenn Sie näheres zur Paket- und Quellenverwaltung erfahren wollen, dann lesen Sie auch unseren Beitrag zum apt Paketmanager.
Aufruf des Befehls
Standardmäßig lässt sich wget mit der folgenden Syntax aufrufen:
wget [Optionen] [URL(s)]
Ohne Angabe jeglicher Optionen können Sie wget eine oder mehrere URLs übergeben. Diese werden dann von dem Befehl heruntergeladen und im aktuellen Arbeitsverzeichnis abgespeichert.
Beispiel: Wget ohne Optionen
In diesem Beispiel wird die "index.html" dieser Website, welche unter "https://profi-tutorials.de" erreichbar ist, heruntergeladen und im aktuellen Arbeitsverzeichnis gespeichert.
Eingabe:
wget https://profi-tutorials.de
Ausgabe:
Wichtige Funktionen / Optionen
Sie haben bei der Verwendung von wget eine Vielzahl von Funktionen und Optionen zur Auswahl, welche wir in diesem Beitrag jedoch nicht alle im Detail behandeln können. Aus diesem Grund werden hier nur die für die alltägliche Arbeit wichtigsten Funktionen einmal aufgeführt.
-t - Anzahl Versuche festlegen
Wenn Sie einen URL Download über eine langsame Verbindung starten, dann kann es vor Abschluss des Downloads zu Verbindungsabbrüchen kommen. Wget versucht in diesen Fällen, den Download möglichst wieder fortzuführen. Wenn die voreingestellte Anzahl Versuche, welche 20 beträgt, jedoch verbraucht sind, dann wird wget den Download abbrechen. Wenn Sie eine andere Anzahl Versuche verwenden möchten, dann können Sie mit der Option -t (tries) leicht Ihren eigenen Wert festlegen:
wget -t [Versuche] [URL(s)]
-c - Download fortsetzen
Ist ein Download nun aus jeglichen Gründen abgebrochen worden, beispielsweise manuell, dann können Sie Ihn auch zu einem späteren Zeitpunkt noch fortsetzen. Verwenden Sie dazu die Option -c (continue):
wget -c [URL(s)]
Voraussetzung hierbei ist jedoch, dass die lokalen Dateien des ersten Downloads noch auf dem Dateisystem vorhanden sind. Wenn Sie versuchen, einen abgebrochenen Download ohne Verwendung der -c Option fortzuführen, dann wird wget die vorhandenen Dateien ignorieren und von vorne beginnen.
Beispiel: Wget Download fortsetzen
Hier wurde der Download einer größeren Datei nach kurzer Zeit abgebrochen. Er soll zu einem späteren Zeitpunkt jedoch fortgesetzt werden.
Vorher (Download abgebrochen):
Ein zuvor gestarteter Download wurde manuell mit der Tastenkombination [Strg+C] abgebrochen. Der Download war zu diesem Zeitpunkt zu 11% abgeschlossen.
Eingabe:
Durch Eingabe des Befehls zum Download derselben Datei und zusätzliches Anfügen der Option -c kann der Download dort fortgesetzt werden, wo er abgebrochen wurde. (Link für dieses Beispiel gekürzt)
wget -c https://cdimage.debian.org/[...]/debian-10.3.0-amd64-xfce-CD-1.iso
Ausgabe (Download wird fortgesetzt):
An der Ausgabe des Befehls sehen Sie, dass wget die bereits heruntergeladenen Teile der Datei gefunden hat und den Download entsprechend mit einem Offset fortführt. Die Fortschrittsanzeige zeigt mithilfe von dem Plus '+' Symbol den bereits vorhandenen Fortschritt an.
-i - URLs aus einer Datei auslesen
Mit der Option -i (input file) haben Sie die Möglichkeit, URLs aus einer lokalen oder auch externen Datei auszulesen und für den Download zu verwenden:
wget -i [Dateipfad] [URL(s)]
Die angegebene Datei sollte die gewünschten URLs untereinander auflisten, sodass für jede URL eine Zeile verwendet wird. Alternativ haben Sie auch die Möglichkeit, anstelle eines Dateipfads den Parameter '-' zu übergeben: Hierbei werden die URLs aus dem Standard-Input (stdin) gelesen.
Wenn Sie mehr über den Standard-Input, sowie den Standard-Output erfahren wollen, dann lesen Sie auch unseren Beitrag zu diesem Thema.
Bei Verwendung der Option ist es nicht notwendig, URLs auf der Befehlszeile bzw. direkt im Befehl anzugeben. Wenn Sie dennoch beide Quellen verwenden, dann wird wget zunächst die URLs der Befehlszeile herunterladen und anschließend mit den URLs aus der angegebenen Datei fortfahren.
Beispiel: Wget URLs aus einer Datei auslesen
Hierbei werden einige URLs in einer Textdatei mit dem Namen "urls.txt" abgespeichert. Diese sollen im Anschluss durch wget heruntergeladen und im aktiven Arbeitsverzeichnis gespeichert werden.
Inhalt Textdatei ("urls.txt"):
Eingabe:
wget -i urls.txt
Ausgabe:
Im Terminal wird nun der Fortschritt der einzelnen URL-Downloads aufgelistet.
Inhalt Zielverzeichnis bzw. Arbeitsverzeichnis (ls -l):
Im Arbeitsverzeichnis befinden sich nun die heruntergeladenen Dokumente. Die einheitliche Benennung der Dateien resultiert daraus, dass die Bezeichnungen der heruntergeladenen Dokumente mit "index.html" alle gleich sind - der Inhalt ist jedoch unterschiedlich!
-O - Ausgabedatei festlegen
Durch Festlegen der Ausgabedatei mit der Option -O (output document) werden die heruntergeladenen Dokumente nicht mehr in Ihre jeweiligen Dateien geschrieben. Stattdessen werden sie miteinander konkateniert und in eine gemeinsame Datei mit dem von Ihnen festgelegten Namen/Pfad geschrieben:
wget -O [Dateipfad] [URL(s)]
Auch hier haben Sie wieder die Möglichkeit, den Parameter '-' zu übergeben - Dieser führt zur Ausgabe der heruntergeladenen Inhalte im Standard-Output.
Beispiel: Wget Ausgabedatei festlegen
In diesem Beispiel sollen alle heruntergeladenen Dokumente in eine Zieldatei mit dem Namen "profi-tutorials-beitraege.txt" geschrieben werden. Wir verwenden wieder die bereits bekannte Textdatei "urls.txt" als Quelle für unsere URLs.
Inhalt Textdatei ("urls.txt"):
Eingabe:
wget -i urls.txt -O profi-tutorials-beitraege.txt
Inhalt Zielverzeichnis bzw. Arbeitsverzeichnis (ls -l):
Im Arbeitsverzeichnis befindet sich nun die gewünschte Datei "profi-tutorials-beitraege.txt", welche den gesamten Inhalt der Dokumente enthält, die unter den obigen URLs erreichbar sind.
-P - Ausgabeverzeichnis festlegen
Die Option -P (Prefix) legt das Verzeichnis-Präfix auf den angegebenen Pfad fest, sodass alle heruntergeladenen Dateien und Unterverzeichnisse unter diesem gespeichert werden.
wget -P [Verzeichnis-Präfix] [URL(s)]
Der Standardwert ist hierbei '.' und gibt das aktive Arbeitsverzeichnis an.
Beispiel: Wget Ausgabeverzeichnis festlegen
In diesem Beispiel soll das heruntergeladene Dokument in dem Verzeichnis /home/hellberg/Downloads/ abgelegt werden.
Eingabe:
wget -P /home/hellberg/Downloads/ https://profi-tutorials.de/linux/netzwerke/befehl-ssh/
Ausgabe:
Im Terminal wird wieder der Fortschritt des URL-Downloads gezeigt. Hier ist auch zu sehen, dass das heruntergeladene Dokument in unserem zuvor angegebenen Zielverzeichnis gespeichert wird.
Inhalt Zielverzeichnis (ls -l /home/hellberg/Downloads/):
Im Zielverzeichnis, welches wir mit der Option -P angegeben haben, befindet sich nun das heruntergeladene Dokument.
-r - Rekursiver Download
Wget ist dazu in der Lage, heruntergeladene HTML Dokumente zu parsen, um schließlich auch den Inhalt referenzierter Dokumente / Dateien herunterzuladen. Auf diese Weise ist es möglich, rekursiv ganze Webseiten herunterzuladen. Die Syntax lautet folgendermaßen:
wget -r [URL(s)]
Bei der Verwendung der Option sollten Sie jedoch beachten, dass nicht nur Remote Server durch Ihren Download überladen werden können - Auch auf Ihrem eigenen System kann es durch das rekursive Herunterladen schnell zu einer Überlastung der Netzwerk-Bandbreite oder auch des Arbeitsspeichers bzw. der CPU kommen.
Es stehen noch viele weitere Optionen bereit, die den Funktionsumfang des rekursiven Downloads um ein Vielfaches erweitern und Ihnen mehr Kontrolle über den Ablauf verleihen. Einige dieser Optionen werden im Folgenden vorgestellt.
-l Rekursionstiefe festlegen
Mit der Option -l (level) können Sie die Rekursionstiefe, also die maximale Tiefe, bis zu der die Suche 'abtauchen' darf, festlegen. Der Standardwert für die Rekursionstiefe ist 5.
wget -r -l [Tiefe] [URL(s)]
Beispiel: Wget Rekursionstiefe
In diesem Beispiel sollen von der URL "https://profi-tutorials.de" rekursiv alle referenzierten Dokumente ebenfalls heruntergeladen werden. Die Rekursion soll jedoch nicht tiefer als bis auf 2 Level / Ebenen fortschreiten.
Eingabe:
wget -r -l 2 https://profi-tutorials.de
Ausgabe:
Im Terminal wird wieder der Fortschritt des URL-Downloads gezeigt. Nach Abschluss des Herunterladens wird eine kurze Zusammenfassung zu der Anzahl heruntergeladener Dateien, der Kapazität, verstrichenen Zeit etc. ausgegeben.
Inhalt Zielverzeichnis (ls -l /home/hellberg/Downloads/):
Im Zielverzeichnis bzw. dem aktiven Arbeitsverzeichnis befindet sich nun ein neues Verzeichnis mit dem Namen "profi-tutorials.de", welches sowohl das erste heruntergeladene Dokument, als auch alle Referenzen enthält. Die gesamte Linkstruktur wird dabei durch Unterverzeichnisse abgebildet.
-k - Externe Links umwandeln
Wandeln Sie mit -k externe- zu internen Links um: Auf diese Weise können Sie ganz natürlich und lokal über die ursprüngliche Linkstruktur zwischen den heruntergeladenen Dokumenten navigieren. Von der Konvertierung betroffen sind neben sichtbaren Navigationslinks jedoch auch Referenzen auf andere Inhalte, wie eingebettete Bilder, CSS-Dateien und weitere.
wget -r -k [URL(s)]
-A und -R - Datei-Erweiterungen erlauben und ignorieren
Mit den beiden Optionen -A (ACCLIST) und -R (REJLIST) können Sie jeweils eine mit Kommata getrennte Liste an Datei-Erweiterungen übergeben, die heruntergeladen oder nicht heruntergeladen werden sollen.
Die Option -A wird dabei verwendet, um eine spezielle Liste von Dateitypen zu erlauben, während -R verwendet wird, um eine bestimmte Liste von Dateitypen auszuschließen und alle anderen zu erlauben.
[wget -r [-R / -A] [Datei-Erweiterungen] [URLs]
-b - Im Hintergrund ausführen
Zuletzt sei auch noch einmal die Option -b (background) genannt, welche die Ausführung von Downloads mit wget im Hintergrund ermöglicht.
wget -b [URL(s)]
Nach Ausführung werden Sie sofort zurück auf die Befehlszeile geleitet und haben die Möglichkeit, andere Aufgaben zu erledigen. Alle Terminal-Ausgaben werden in die sogenannte wget-log umgeleitet.
Lade Dir JETZT die Linux Befehle PDF herunter!
Erhalte einen Überblick zu den wichtigsten Linux und UNIX Befehlen!