w3mir

Aus LinuxUser 05/2003

w3mir

Spieglein, Spieglein an dem Web

Online-Nachschlagewerke gibt es inzwischen wie Sand am Meer. Gründe, diese besser lokal bei sich zu Hause zu haben, ebenfalls. W3mir spiegelt Web-Sites – komplett oder nach Maß.

Nicht jeder hat eine schnelle DSL-Flatrate, und ständiges Einwählen, nur um in seinem Lieblingshandbuch etwas nachzuschlagen, ist lästig und teuer. Viel schlimmer noch – manchmal ist das tolle Nachschlagewerk, das man letztens entdeckt hat, beim nächsten Besuch einfach verschwunden. Auch nach mancher “Überarbeitung” einer vorher netten Seite ist man mitunter froh, noch einen lokalen Mirror zu besitzen, der nicht nach Flash Version 21 schreit. w3mir ermöglicht das Spiegeln kompletter Web-Sites auf das lokale System. Das w3mir-Paket ändert dabei die Links in den gespiegelten Seiten so, dass der Browser die referenzierte Seite, wenn vorhanden, auf dem lokalen System sucht und der Link nicht etwa wieder auf das Web verweist. Auch einzelne Dokumente lassen sich auf diese Weise aus dem Netz kopieren.

Installation

Wer das Paket w3mir nicht in seiner Distribution findet, der installiert es folgendermaßen: w3mir setzt die Pakete perl-libwww-perl und perl-MIME-Base64 voraus. Wenn Sie bereits Perl-Applikationen installiert haben, haben Sie sie sicherlich schon in Ihrem System, andernfalls bekommen Sie sie unter [1] und [2] oder von der Heft-CD. Das Paket w3mir selbst ist unter [3] erhältlich oder auch der CD zu entnehmen. Entpacken und dekomprimieren Sie das tar-Archiv mit

tar xzvf w3mir-*.tar.gz

cd w3mir-* wechselt in das neu erstellte Verzeichnis. Dort installieren Sie das Paket mit

perl Makefile.PL
make
make install

Hierzu sind root-Rechte notwendig.

Einzelspiegel

Welche Dateien w3mir kopieren soll, bestimmen Sie in seiner Konfigurationsdatei, die Sie mit jedem beliebigen Texteditor, z.B. vi oder kwrite, erstellen können. Standardmäßig erwartet w3mir seine Konfiguration unter dem Namen .w3mirc in dem Verzeichnis, in das es den Web-Bereich spiegeln soll. Alternativ lässt sich w3mir natürlich auch einfach mit Optionen aus der Kommandozeile heraus aufrufen, mit der Option -cfgfile jubeln Sie ihm eine andere Konfigurationsdatei unter. Soll nur eine einzelne Datei aus dem Web kopiert werden, reicht eine Zeile in der .w3mirc:

URL: http://www.schlumpf.com/infos/who/31gargam.gif

Um sich das Bild des ständigen Verlierers aller Schlumpfabenteuer an den Desktop zu pinnen, genügt nun der Aufruf w3mir in dem Verzeichnis, in dem auch seine Konfiguration liegt.

Server-Spiegelung

Sein ganzes Können entfaltet w3mir, wenn es ums Spiegeln einer kompletten Web-Site geht. Statt hunderter Einzelklicks im Browser gibt man einfach die Adresse der Web-Site an. Doch Achtung: Die Adresse muss mit einem “/” enden, sonst glaubt w3mir, es soll eine Datei herunterladen. Kasten 2 erläutert den Unterschied.

Kasten 2: Kleiner Schrägstrich – großer Unterschied

URL: http://www.xyz.com/thema1/

erweitert w3mir zu http://www.xyz.com/index.html (oder was der jeweilige Webserver als Inhaltsverzeichnis ausliefert) und lädt alles herunter, das im Verzeichnis thema1 unter www.xyz.com zu finden ist.

URL: http://www.xyz.com/thema1

Hier versucht es hingegen, die Datei thema1 zu kopieren.

Mit Options: recurse vor der URL-Zeile spiegelt w3mir neben der Einstiegsseite auch alle referenzierten Objekte, HTML-Seiten, Bilder und Dokumente. Um zu verhindern, dass w3mir nun rekursiv bis in alle Ewigkeit das gesamte Web herunterlädt und wenn er fertig ist, wieder von vorne beginnt, ignoriert er bei allen Spiegelaktionen externe Links. Wer sich einen navigierbaren Katalog der griechischen Götterwelt abziehen möchte, dem sei das Beispiel aus Kasten 3 empfohlen.

w3mir -cfgfile .w3mir_goetter

kopiert das Nachschlagewerk auf das lokale Verzeichnis, und mit

netscape goetter.htm

kann man sich dann offline durch den Olymp klicken (Abbildung 1).

Kasten 3: Download eines Götterlexikons

Options: recurse
URL: http://www.werbeka.com/bibliote/gudar/goetter.htm
Fixup: run

Abbildung 1: Gespiegeltes Nachschlagewerk griechischer Götter

Abbildung 1: Gespiegeltes Nachschlagewerk griechischer Götter

Verbiegungskünstler

Im letzten Beispiel haben wir neben recurse gleich noch einen weiteren Eintrag

Fixup: run

dazugemogelt: Mit dieser Option startet w3mir nach dem Download ein weiteres Programm w3mfix. Dieses biegt alle Links so um, dass das referenzierte Objekt lokal gesucht wird und der Link nicht etwa weiter ins Web zeigt (vorausgesetzt, man hat auch das referenzierte Objekt heruntergeladen). Wer sich mehr dafür interessiert, wie w3mir das schafft, sollte sich die Datei .referers ansehen: Darin verwaltet das Programm die Referenzen und nimmt anhand dieser die Korrekturen vor.

Querverweise

Manche Server haben ihre Web-Präsentation derart organisiert, dass sie Bilder oder Icons in eigenen Unterverzeichnissen halten; z. B. Bilder in www.xyz.com/images/, Werbung hingegen in www.xyz.com/ads/. Wenn nun unser Einstiegspunkt in einem anderen Zweig des Verzeichnisbaums liegt, etwa www.xyz.com/thema1/, kann w3mir die entsprechenden Dateien nicht kopieren, da es ja standardmäßig nur alles unterhalb des Einstiegspunkts lädt. Um diesem Problem zu begegnen, gibt man zu einer URL in der Konfigurationsdatei mit der Option Also noch weitere Adressen an. In unserem Fall also ein

Also: www.xyz.com/images/ Bilder

(Die Werbung will wohl kaum jemand freiwillig runterladen.) Die Angabe hinter der Adresse ist nicht etwa ein Kommentar (der wird in der Konfigurationsdatei mit einem # eingeleitet), sondern der Name des Verzeichnisses, in dem w3mir die gefundenen Objekte im lokalen System ablegen soll. w3mir baut ein hierarchisches Dateisystem analog zu dem im Web auf. Liegen referenzierte Dateien nicht unter dem gleichen Anfangsteil der URL, so gehören diese im Grunde auch nicht in diesen Dateibaum (sie liegen darüber oder daneben). Damit w3mir sie eben doch dort unterbringt, sollten Sie ein Zielverzeichnis in der Also-Zeile angeben. Erwähnenswert ist an dieser Stelle, dass w3mir keine absoluten Adressen einpflegt: Der gespiegelte Dateibaum lässt sich nach dem Download als Ganzes via cp kopieren oder auf eine CD brennen und archivieren.

Nicht zuviel!

Neben dem “Auch”, dem Also-Eintrag kennt w3mir auch ein “auf keinen Fall”: Ignore-Einträge teilen w3mir mit, was es nicht kopieren soll. Praktisch ist diese Option zum Beispiel, wenn eine Web-Site mit riesengroßen Dateien im wav– oder mpg-Format gefüllt ist, auf die man als Besitzer eines langsamen Modems doch lieber verzichtet. Die Zeilen

Ignore: *.wav
Ignore: *.mpg

halten potentielle Bandbreitenfresser vom Rechner fern. Auch Verzeichnisse namens ads oder advert sind oft gute Kandidaten für ein Ignore. Die Ignore-Regeln lassen sich durch Fetch-Regeln ergänzen, die die Syntax

Fetch: <suchmuster>

besitzen. Mit Also, Ignore und Fetch knüpft man ein feines Netz aus Bedingungen, so dass w3mir letztendlich nur das herunterlädt, was man wirklich haben will. Auch unser Götterbeispiel lässt sich damit verbessern: Wer ausprobiert hat, den Olymp herunterzuladen, dem wird aufgefallen sein, dass durch die Rekursion auch alle Seiten in der schwedischen Version auf der heimischen Festplatte gelandet sind. Da der Autor des Werks glücklicherweise alle schwedischen Seiten mit *s.html benannt hat, fügen wir noch eine entsprechende Ignore-Anweisung in unsere Konfigurationsdatei ein (siehe Kasten 4) und erhalten einen gespiegelten Satz der deutschen Seiten.

Kasten 4: Die verbesserte Konfigurationsdatei <I>.w3mirc_g<I> ignoriert schwedische Seiten.

Options: recurse
URL: http://www.werbeka.com/bibliote/gudar/goetter.htm
Ignore: *s.htm
Fetch: *
Fixup: run

Unendliche Weiten

Nicht nur in den Weiten des Netzes kann man sich verlieren: Manchmal entpuppt sich auch eine vermeintlich kleine Web-Site als viel inhaltsreicher als man gedacht hätte. Wenn sich dahinter ein gigantischer Komplex mit Verzeichnissen, Unterverzeichnissen und weiteren Unterverzeichnissen verbirgt, ist die Festplatte schnell voll – vor allem, wenn man mit vielen Also-Klauseln arbeitet. Ein probates Mittel, die Rekursionstiefe zu beschränken, ist der Einsatz einer geschickt formulierten Ignore-Regel. So sorgt z. B.

Ignore: / */*/*/*/

dafür, dass w3mir alle URLs mit über fünf Slashes links liegen lässt. Wieviel zieht w3mir also mit dieser Ignore-Regel von unserem Götterhimmel? Nicht eine einzige Datei! Statt dessen beschwert er sich über eine inkonsistente Konfiguration. Kein Wunder, wo doch das “http:” schon von zwei Schrägstrichen gefolgt ist, was man sehr leicht beim Zählen übersieht… Die vorgestellte Lösung zur Download-Drosselung funktioniert allerdings nur bei hierarchisch organisierten Web-Sites. Leider scheint es in w3mir im Gegensatz zu wget keine einfache Option zu geben, die das Verfolgen von internen Verweisen irgendwie eingrenzt. Nur einen Teil einer flach organisierten Web-Site zu spiegeln, z.B. nur alle Seiten, auf die die Einstiegsseite verweist, ist damit unmöglich.

Reguläre Freunde

Neben den einfachen Ignore– und Fetch-Klauseln, in denen man nur die Unix-Wildcards * und ? sowie Zeichenklassen der Form [x-z] verwenden kann, versteht w3mir auch reguläre Ausdrücke. Mit den Klauseln Ignore-RE und Fetch-RE lassen sich nach Herzenslust reguläre Ausdrücke in der Syntax von Perl formulieren, die nachher nicht einmal Sie selbst mehr lesen können, die dafür aber unheimlich mächtig sind. Die Man-Page im w3mir-Paket geht darauf ausführlich ein.

Keine Scheu vor PDF!

Die Leistungsfähigkeit von w3mir ist recht beachtlich. Auf dem Rekursionstrip durchsucht es nicht nur HTML-Seiten nach Links. Es ist sogar in der Lage, Referenzen in PDF-Dateien zu erkennen und seine Suche auf die dort angegebenen Links ausdehnen. Nur die PDF-Datei anschließend so zu korrigieren, dass die Links darin auf die heruntergeladenen Objekte verweisen, schafft das dafür zuständige w3mfix aus verständlichen Gründen nicht mehr. Mit in HTML-Objekte eingebetteten Skripten, wie Java-Script, wird es gut fertig.

W3mir bewältigt schon jetzt eine ganze Reihe von Problemen, und es lohnt sich, Energie in die Handhabung zu stecken. Da das Tool ständig weiterentwickelt wird, könnten einige Probleme, die zur Zeit noch bestehen [4], bald gelöst sein. Das Paket enthält eine leicht verständliche Dokumentation in HTML und als Man-Page und eine Beispielkonfigurationsdatei, die erklärt, wie man mit w3mir Passwortabfragen überwindet, einen bestimmten Proxy Server nutzt oder Server, die sich gegen eine vollständige Spiegelung sperren, mit einer Verzögerung überlistet.

Glossar

reguläre Ausdrücke

Auch Regular Expressions genannt: Platzhalter für bestimmte Zeichenfolgen. Ein beliebtes Einsatzgebiet sind komplexe Suchvorgänge, zum Beispiel in Texteditoren oder den zahlreichen Unix-Skriptsprachen. Der Aufruf man perlretut zaubert ein kleines Tutorial auf den Bildschirm, das reguläre Ausdrücke kompakt erklärt.

Der Autor

Volker Schmitt ist Mathematiker und arbeitet bei einer großen Versicherung. Besonders ärgerlich wurde er das eine oder andere Mal, als eines seiner genutzten Online-Handbücher auf Nimmerwiedersehen aus dem Netz verschwand.

LinuxUser 05/2003 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben