logoOL.gif
user_gelb_schwarz_or.gif
logoUL.gif
logoUR.gif claim.gif
LinuxUser LinuxCommunity EasyLinux Linux-Magazin International
      Anzeige
TFT Monitor bei Mercateo kaufen.
Neues Netbook? Ein Preisvergleich lohnt sich.
Bei uns finden sie Notebooks, PDAs und Drucker mit Testberichten und Tipps.
Diamant Buchhaltungssoftware – transparent und detailliert auch für die Konzernbuchhaltung.
Günstige Shareware Programme als direkte Downloads im Software Portal.
Bis zu 70% sparen durch Preisvergleich.
      Anzeige

Erschienen in LinuxUser 08/2001   »   Ausgabe bestellen

Zu Befehl

Fischers Fritz fischt frische Web Sites -- mit Wget

von Heike Jurzik
 [ Titelbild ]


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 --help | less.

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-Server zwischenschalten. 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://...
 


Proxy-Server: Ein Proxy wird typischerweise aus zwei Gründen verwendet: Wenn Ihr Internet-Zugang keine direkte Verbindung zu beliebigen Rechnern im Netz erlaubt, richtet der Provider einen Proxy-Server ein, über den dann alle WWW- und FTP-Anfragen laufen. Der Proxy selbst prüft dann zunächst, ob er die gesuchte Seite lokal in seinem Cache hat. Falls ja, schickt er diese Kopie; falls nein, zieht er selbst die Seite aus dem Netz und überträgt sie dann. In einem Intranet ergibt der Einsatz eines Proxies Sinn, wenn häufig von mehreren Anwendern auf die gleichen Seiten zugegriffen wird. Dann spart der Proxy Download-Gebühren.

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.

Grafisch fischen -- mit gtm und kwebget

Mit dem GTransferManager und KWebGet gibt es zwei Tools, die direkt auf Wget aufsetzen. GTransferManager basiert auf den Gtk-Libraries - das README verrät, dass mindestens Gtk 1.2.x auf dem System vorhanden sein sollte. Da sich auf dem Web-Server nur Red-Hat-7-RPMs befinden, beschreiben wir kurz die Installation aus den Sourcen: Nach dem Entpacken des Archivs (tar xzf /tmp/gtm-0.4.9.tar.gz) und Wechsel in das neue Verzeichnis gtm-0.4.9 erzeugt der übliche Dreischritt aus den Befehlen ./configure, make und make install das lauffähige Programm. Die Übersetzung der Elemente ins Deutsche ist nicht sonderlich gut gelungen, weshalb es sich empfiehlt, das Programm in Englisch zu starten (vor dem Aufruf export LANG=en_US).

Nach erfolgreicher Installation können Sie das Programm z. B. aus einem Xterm heraus mit dem Aufruf gtm & starten. Klicken Sie zunächst auf Settings/Preferences und konfigurieren Sie das Programm nach Ihren Wünschen - mit dem Hintergrundwissen, das Sie sich über Wget angeeignet haben, ist das kein Problem mehr. Sie können einen Proxy-Server auswählen (s. bei Wget die Optionen zu --proxy=), ein Download-Verzeichnis auswählen, die Anzahl der Versuche definieren und als spielerische Ergänzung den "Look" vom Programm und einen Sound einstellen. Zum Download fügen Sie mit New eine neue URL hinzu und klicken dann auf Start. Rekursive Downloads beherrscht GTM aber noch nicht.

Abb. 1: GTM fragt nur nach URL und Zielverzeichnis

Abb. 2: Die Bedienoberfläche von GTM ist hübsch; leider fehlen dem GNOME-Programm noch viele Funktionen

Fortgeschrittener ist KWebGet: Ein Download-Assistent führt Sie in mehreren Schritten durch die Abfrage der relevanten Informationen. Dabei ist eines der möglichen "Projekte" das Erstellen eines Mirrors, also das vollständige Spiegeln einer Web-Seite.

Abb. 3: Hier wird dem KWebGet-Assistenten die Start-URL mitgeteilt

Nach der Zwiesprache mit dem Download-Assistenten ist das aktuelle Download-Projekt noch in einem Dialog mit sieben Karteikarten detailliert konfigurierbar; die meisten von Wget bekannten Optionen finden Sie hier wieder, so etwa Einstellungen zu Rekursions-Level und Wiederholversuchen oder Dateitypen (Abbildung 4). Selbst eine Zeitverzögerung kann hier vorgegeben werden: Interessant, falls Sie einen größeren Download planen aber während der Arbeitszeit nicht die Bandbreite Ihres Internet-Zugangs schmälern wollen.

Abb. 4: KWebGet-Einstellungen

Die grafischen Frontends zu Wget sind leicht zu bedienen. Es ist jedoch wie bei allen Programmen, die in "Zu Befehl" vorgestellt werden, immer wieder die Kommandozeile, die die vielfältigeren Möglichkeiten bietet. Haben Sie sich einmal mit den langen Befehlsaufrufen angefreundet, entdecken Sie schnell die Vorteile, z. B. bei der Kombination von Befehlen. In Zusammenarbeit mit dem Programm screen (LinuxUser 01/2001, Zu Befehl) starten Sie Wget für größere Downloads auf einem entfernten Rechner im Hintergrund und trennen die Verbindung wieder. Insbesondere der Download-Assistent von KWebGet verdeutlicht zudem: Der Komfort des GUI-Tools ist hoch, aber es dauert auch Ewigkeiten, sich durch die Dialoge zu klicken. (hej/hge)

Infos

[1] Wget: http://www.gnu.org/software/wget/wget.html
[2] Gnome Transfer Manager: http://gtm.sourceforge.net/
[3] KWebGet: http://www.kpage.de/de/

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.




Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2010 Linux New Media AG

[Linux-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Ubuntu User] [Linux Technical Review] [Linux Magazine] [Linux Pro Magazine] [Ubuntu User]
[EasyLinux Poland] [Linux Magazine Poland] [Linux Magazine Brasil] [EasyLinux Brasil] [Linux Magazine Spain]