wget ist ein nettes Kommandozeilenwerkzeug, um Webseiten oder Dateien per HTTP oder ftp herunterzuladen. Wenn man eine lange Datei herunterlädt und die Verbindung bricht ab, kann man mit wget -c (oder wget --continue) an der Stelle des Abbruchs fortsetzen, ohne die Datei komplett neu laden zu müssen.

wget kennt eine ganze Reihe nützlicher Optionen.

Homepage: http://www.gnu.org/software/wget/wget.html

Lizenz: GPL

INFO! wget hat sich zwar als Downloadstandard auf der Konsole durchgesetzt, aber wie wir schon von Betriebssystemen gelernt haben sollten, Standard ist aber nicht gleichbedeutend ist mit Nonplusultra ;) jedenfalls gibt es einige Sicherheitslücken in wget - die Meldungen sind zwar von 2004 aber immer noch (!) aktuell:

Als Workaround schlägt der wget-Maintainer den Einsatz anderer Tools wie axel, pavuk oder ncftpget vor. Ein Tutorial zu axel findet sich hier. Natürlich kann Axel auch für Portage (Gentoo) oder auch für apt-get (Debian) nehmen, um auch dort wget zu ersetzen, und die Downloads zu beschleunigen. (Achtung aber, nicht jeder Server mag mehrere Verbindungen auf einmal - dann einfach axel mit -n 1 betreiben, dann verhält sich der Axel wie der wget).

Alternativen

Tipps & Tricks

Herunterladen von Dateien

Normalerweise ruft man wget mit der Zeile

wget http://www.foo.net/download/paket.rpm

auf. Dies holt die Datei paket.rpm auf den lokalen Rechner. Bricht der Download irgendwo ab, kann man den Rest mit

wget -c http://www.foo.net/download/paket.rpm

oder

wget --continue http://www.foo.net/download/paket.rpm

abholen.

Manchmal wird das Herunterladen durch den Server verweigert. Es erscheint FEHLER 403: Forbidden. Mit der Option --user-agent=ein_beliebiger_Browsername kann der Fehler ggf. übergangen werden (Beispiel: DruckAnsicht).

Zu wget gibt es eine Reihe graphischer Frontends, z.B. KWebGet oder GTM. wget ist jedoch eine gute Möglichkeit für Ein- und Umsteiger erste Erfahrungen mit der Kommandozeile zu machen, da es einfach zu bedienen ist, man nicht allzuviel damit kaputtmachen kann und man endlich weiß, dass ein Browser zum Herunterladen vieler und vor allem großer Dateien nicht taugt ;-) .

Zyklisches Herunterladen von Dateien

Möchte man eine Datei zyklisch, z.B. einmal pro Minute, herunterladen, kann man - z.B. um das Bild einer Webcam einmal pro Minute zu speichern - folgendes kleines Skript verwenden:

#/bin/sh
while /bin/true; do
 wget http://host/webcam.jpg -O webcam_`/bin/date '+%Y%m%d_%H%M'`.jpg;
 sleep 60;
done;

Die Dateien heißen dann "webcam_20100615_0946.jpg" usw. Das Skript kann mit Strg+C abgebrochen werden.

Mini-Howto

wget -r -l 2 http://www.webseite.org/index.html

oder

wget --recursive --level=2 http://www.webseite.org/index.html

holt die Webseite index.html vom Server. Zusätzlich werden rekursiv (-r) alle Dateien geholt, die sich bis zu 2 (-l 2) Verweise von der Hauptseite weg befinden. Dabei wird auch die Verzeichnisstruktur des Servers im Downloadverzeichnis abgebildet.

/!\ Achtung: Setzt man -l auf den Wert 0, so heißt das, dass die Rekursionstiefe nicht 0, sondern unendlich ist. Somit würde man schätzungsweise das komplette Internet auf die lokale Festplatte schaufeln ;-) .

wget beherrscht auch die Option -i. Dann liest wget die abzuholenden Dateien aus einer Datei. Das ist beispielsweise nützlich, wenn man eine Reihe von Dateien (beispielsweise die neuesten KDE-Binaries ;-) ) von einem Server holen möchte.

Beispiel:

Die Datei Filelinks enthält die URLs zu den einzelnen Paketen. Dann kann man mit

wget -i Filelinks

oder

wget --input-file=Filelinks

alle Dateien abholen lassen. Ist der Download fertig, empfiehlt es sich, den Befehl mit der Option -c erneut auszuführen und die wget-Ausgabe zu beobachten:

wget -c -i Filelinks
Paket1.rpm: Download der Datei bereits vollständig.
Paket2.rpm: Download der Datei bereits vollständig.
Paketn.rpm: Download der Datei bereits vollständig.

So stellt man sicher, dass die Dateien auch tatsächlich komplett übertragen wurden. Da es aber auch Netzwerktraffic verursacht, nur dann einsetzen, wenn unbedingt nötig. Eine (schnellere) Alternative hierzu ist puf (Parallel URL Fetch).

wget und proxys

Damit wget auch über den proxy benutzt werden kann, müssen der bzw. die Proxies entweder in der Datei ~/.wgetrc oder als Umgebungsvariablen gesetzt sein.

/!\ Werden die Variablen verwendet, so werden diese auch von manchen anderen Programmen (z. B. lynx) genutzt

Frage und Antwort

Frage: Gibt es eigentlich eine Möglichkeit eine Seite per wget zu holen und gleich anzuzeigen? Ich suche nämlich noch eine schnellere Alternative zu curl. -- DanielBrüßler 2003-11-24 19:25:59

Antwort: wget -O - http://www.example.org/, das "-" nach dem "-O" gibt an, dass Quelle auf STDOUT ausgegeben wird. -- DanijelTasov

Antwort: dog (advanced replacement for cat) könnte hilfreich sein.

Frage: Beim Übertragen von Dateien >2G über http mit einem wget von Knoppix 3.1 und Debian Woody schlägt ein assert() in retr.c:254 fehl. Bug? Was kann man tun? -- 131.220.99.35 2004-01-30 16:11:02


wget (zuletzt geändert am 2010-06-15 07:48:28 durch n253)