Zu_Befehl.jpg

Fischers Fritz fischt frische Web Sites – mit Wget

Zu Befehl

01.08.2001
Wget ist ein Download-Tool, das gleichermaßen mit WWW- wie FTP-Servern umgehen kann und dank zahlreicher Optionen genau die Dateien holt, die Sie brauchen.

Das Programm GNU Wget ist ein praktisches Tool, um Dateien aus dem World Wide Web auf den eigenen Computer zu übertragen und sie dort offline anschauen zu können. Auf HTTP und FTP aufsetzend kann man beispielsweise ganze Archive oder Homepages spiegeln. Auch mit einer schlechten Anbindung ans Internet eignet sich das Programm hervorragend zum Download im Hintergrund: Nicht nur ein "Anknüpfen" an eine abgebrochene Übertragung, sondern auch ein Update ist möglich – Wget kann aufgrund von Timestamps erkennen, ob es eine aktuelle Version einer Datei schon heruntergeladen hat. Sollte das Programm noch nicht auf Ihrem Computer installiert sein, können Sie eine aktuelle Version über die Seite http://www.gnu.org/software/wget/wget.html finden, bei den meisten Distributionen ist Wget jedoch enthalten.

Der Standardaufruf von Wget ist wget [options] URL (Uniform Resource Locator). Bevor es in die Details zu den Optionen geht: Wget ist ein GNU-Tool, d. h. alle Parameter haben eine lange (wget --version) und eine kurze Form (wget -V). Mit wget -h (oder --help) bekommen Sie eine ausführliche Kommandoübersicht. Sollten die vielen Optionen einfach durchscrollen, "pipen" Sie die Ausgabe einfach durch einen Pager Ihrer Wahl (z. B. less oder more): wget --helpless.

Starten Sie nun Ihren ersten wget-Aufruf; dazu legen Sie am besten ein Verzeichnis (z. B.: mkdir wgettest) in Ihrem Home an, wechseln hinein (cd wgettest) und tippen:

huhn@asteroid:~/wgettest$ wget http://www.linux-user.de/
 --16:15:16--  http://www.linux-user.de:80/
            => `index.html'
 Connecting to www.linux-user.de:80… connected!
 HTTP request sent, awaiting response… 200 OK
 Length: 8,208 [text/html]
     0K -> ……..                             [100%]
 16:15:18 (9.01 KB/s) - `index.html' saved [8208/8208]

Direkt auf die Konsole bekommen Sie Meldungen über die aktuellen Aktivitäten des Programmes. Hier können Sie also sehen, dass zum Web Server des LinuxUsers verbunden wird (80 ist der Standard-Port für HTTP) - auf Ihren Computer wird die Datei index.html heruntergeladen. Bilder und Unterverzeichnisse sind nicht mit eingeschlossen. Möchten Sie eine Stufe tiefer gehen, probieren Sie die Option -r (für --recursive). Jetzt folgt Wget den Links und der Verzeichnisstruktur der zu spiegelnden Seiten. Wichtig ist in diesem Zusammenhang der Parameter -l num (--level=num), wobei num für die Anzahl der Level steht.

Ein Aufruf der Form wget -r --level=1 http://www.linux-user.de/ bewirkt etwa, dass die Unterverzeichnisse Home, Info, ausgabe und pics mit dabei sind. Praktisch: Es wird dabei ein Verzeichnis www.linux-user.de angelegt (in diesem Beispiel sollten Sie darüberhinaus die Verzeichnisse www.linux-community.de und www.linux-magazin.de mit jeweils einem Unterverzeichnis finden, da von der User-Startseite aus Links zu diesen Domains existieren). Als Standard-Level für die Rekursion ist 5 vorgegeben.

Ist ein Download mal unterbrochen worden, können Sie mit Hilfe des Parameters -c (--continue) direkt an den vorigen anknüpfen. Vor allem bei großen Datenmengen ist das sehr praktisch. Es spielt übrigens keine Rolle, ob die auf Ihrem Rechner liegenden Dateifragmente mit Wget oder einem anderen Programm heruntergeladen wurden.

Um bestimmte Seiten in regelmäßigen Abständen immer wieder zu sichern, gibt es die Option -N (--timestamping): Geben Sie Wget diesen Parameter mit auf den Weg, wird bei jeder Datei das Datum mit der Datei auf Ihrem Rechner verglichen. Sollte bei der lokalen Kopie also der gleiche "Zeitstempel" vorhanden sein, wird dieses File beim Download ausgelassen:

huhn@asteroid:~/wgettest$ wget -r -l1 -N http://www.uni-koeln.de/
 --17:00:27--  http://www.uni-koeln.de:80/
            => `www.uni-koeln.de/index.html'
 Connecting to www.uni-koeln.de:80… connected!
 HTTP request sent, awaiting response… 200 OK
 Length: 7,490 [text/html]
 Local file `www.uni-koeln.de/index.html' is more recent, not retrieving.

Auf diese Weise laden Sie nur Dateien herunter, die seit dem letzten Abgleich verändert wurden - Sie sparen Zeit und Datenvolumen beim Transfer. Mit der Option -Y on/off (--proxy=on/off) können Sie einen Proxy-Serverzwischenschalten. Dabei greift Wget auf die Umgebungsvariable $http_proxy zurück, die Sie vorher eingestellt haben sollten. Wer zusätzlich $LANG auf "de_DE" setzt, erhält sogar deutsche Ausgaben:

huhn@asteroid:~/wgettest$ export http_proxy="proxy.mydomain.de:8080"
 huhn@asteroid:~/wgettest$ export LANG=de_DE
 huhn@asteroid:~/wgettest$ wget http://www.linux-user.de
 --14:59:12--  http://www.linux-user.de:80/
            => `index.html'
 Verbindungsaufbau zu proxy.mydomain.de:8080… verbunden!
 Proxy Anforderung gesendet, warte auf Antwort… 200 OK
 […]

Falls Ihr Proxy einen Login mit Benutzername und Passwort erwartet, kann Wget auch dies leisten:

wget -r -l1 --proxy=on --proxy-user=huhn --proxy-passwd=IhrPasswort http://…

Kleine Fische in großen Verzeichnissen

Sie haben gerade schon bemerkt, dass jeder wget -r-Aufruf zunächst ein Verzeichnis mit dem Namen der WWW-Seite anlegt, bevor dorthinein kopiert wird. Dies können Sie durch die Angabe wget -nd (--no-directories) umgehen; dann wird die Verzeichnisstruktur der Site nicht mit übernommen. Vorsicht ist hier jedoch geboten bei Dateien mit gleichen Namen: sie werden einfach überschrieben. Der genau entgegengesetzte Parameter zu -nd ist -x (--force-directories). Hier wird die Verzeichnisstruktur der Seite komplett übernommen, selbst wenn das sonst nicht der Fall gewesen wäre. Last but not least in dieser Reihe steht die Option -nH (--no-host-directories) - die Verzeichnisstruktur vom Server wird übernommen, aber der Hostname nicht mit berücksichtigt, d. h. statt ins Unterverzeichnis www.uni-koeln.de wird diesmal ins aktuelle Verzeichnis gespiegelt.

Oft kommt es vor, dass Sie von einem Server nur die Bilddateien herunterladen möchten. Wildcards sind unter Wget nicht möglich, d. h. es gibt keinen Aufruf der Form wget -r -l1 *.jpg http://www.uni-koeln.de. Der Parameter -A "liste" (--accept) schafft Abhilfe. In der "liste" definieren Sie die Dateitypen, Beispiel:

wget -r -l1 -A jpg,gif,png http://www.linux-user.de

Anschließend finden sich im Verzeichnis nur noch diese Bilddateien und eine index.html – die braucht Wget, um überhaupt zu den Bildern "hinzufinden", da das HTTP-Protokoll keinen List-Befehl zum Anzeigen des Verzeichnisinhalts kennt. Hinter den Kulissen fischt Wget eigentlich alle Dateien, entfernt diese aber wieder. Das können Sie am Output auf der Konsole erkennen:

…
 18:03:19 (8.73 KB/s) - `old-news.html' saved [8584/8584]
 Removing old-news.html since it should be rejected.
 …

Natürlich gibt es auch eine genau entgegengesetzte Option: Mit -R "liste" (--reject) können Sie Dateierweiterungen ausschließen. Ein Aufruf wget -r -l1 -R avi,mpg,mp3 http://www.linux-user.de würde, sofern vorhanden, diese Dateitypen aussparen - praktisch, wenn man auf den Download großer Files verzichten möchte. Ein Download-Limit können Sie darüber hinaus mit dem Parameter -Q (--quota) setzen. Diese Begrenzung bezieht sich auf die Gesamtmenge der Daten und wird standardmäßig in Bytes angegeben. Eine Begrenzung in Kilobytes oder Megabytes ist auch möglich - dazu wird k oder m an die Zahl angehängt: wget -r -l1 -Q5m http://www.linux-user.de beschränkt den Download auf 5 MB.

Standards in .wgetrc

Fast alle Parameter, die Sie wget beim Start mitgegeben haben, können Sie in eine Konfigurationsdatei eintragen. Diese ist eine "versteckte" Datei in Ihrem Home-Verzeichnis mit dem Namen .wgetrc und könnte beispielsweise so aussehen:

tries = 20
 reclevel = 5
 timestamping = on
 dirstruct = on

Hier werden direkt mehrere Dinge definiert: "tries" bezeichnet die Anzahl der Download-Versuche, falls der Server nicht erreichbar ist. In diesem Fall versucht Wget 20 mal, eine Verbindung aufzubauen. Der "reclevel" ist der Rekursions-Level, den Sie vorher mit der Option -l verändert haben. Mit der Option "timestamping = on" können Sie auf den Parameter -N beim Wget-Aufruf verzichten. Wird "dirstruct" wie hier eingeschaltet, zwingen Sie Wget, auf jeden Fall eine Verzeichnisstruktur anzulegen, selbst wenn wenn es sich um nur eine Datei handelt.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Vier Download-Manager kurz vorgestellt
    Das Internet bietet gerade für Linux-Freunde einen fast unerschöpflichen Software-Pool mit (meist) kostenlos herunterladbaren Programmen. Um überschüssige Bandbreiten parallel zum WWW-Surfen (kosten-) effizient zu nutzen und Download-Vorgänge sinnvoll zu organisieren, bietet sich insbesondere für Nutzer eines kostenpflichtigen Wählzugangs der Einsatz eines Download-Managers an. LinuxUser stellt Ihnen in diesem Artikel vier aktuell unter Linux kostenlos erhältliche Download-Manager vor und zeigt deren Stärken und Schwächen im Alltagseinsatz auf.
  • Mit wget Dateien rekursiv herunterladen – auch per FTP
  • Mit wget Downloads (irgendwann) fortsetzen
  • FTP-Downloads und Website-Spiegelung mit Wget
    Wget ist ein FTP-Tool, das nicht nur einzelne Dateien, sondern auf Wunsch gleich komplette Websites herunterlädt. Auch eine unzuverlässige Internet-Verbindung stört das Tool nicht: Beschränken Sie einfach Bandbreite oder Download-Menge und setzen Sie abgebrochene Übertragungen fort.
  • Debian-Installation puffern
    Wer mehrere Debian-Rechner in seinem Netz betreibt, muss beim Installieren und beim täglichen Update immer die gleichen Pakte aus dem Internet ziehen. Das kostet nicht nur Zeit und Geld, sondern ist auch technisch unelegant. Eine stets aktuelle Lagerstatt für Debian-Pakete schafft die Wende.
Kommentare

Infos zur Publikation

title_2014_10

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...