Home / LinuxUser / 2001 / 08 / Zu Befehl

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

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.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1420 Hits
Wertung: 55 Punkte (2 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...