Snapshot Cleaner - Wie archiviert man Webseiten ?
| Eine dynamische und datenbankgesteuerte Webseite soll "ausgemustert" werden. Diese Seite wird nicht mehr verwendet und sollte in einem Format archiviert werden, dass leicht portierbar und langlebig ist. Langlebig heisst, dass auch bei einer Umstellung des ganzen Webservers die Seite mit sehr wenig bis gar keinem Aufwand übertragen werden kann. Dazu wird ein Snapshot der Seite gemacht.
| | Autor: tom - Date: 02.04.2005 - Size: 5048 chars - Hits / Day: 0.14 - Total Hits: 9551 |  | Download sc.jar | Size: 10 kb | Datum: 04.02.2005 |  | Download sc-src.zip | Size: 19 kb | Datum: 04.02.2005 | Das langlebige Format ist in diesem Fall HTML. Jeder Webserver kann statische Webseiten im HTML Format problemlos verwalten und darstellen. Und da die Seite nicht mehr aktiv genutzt wird, ist eine Umwandlung von dynamischen Seiten in statische HTML Files die beste Wahl.
Wie ein Snapshot einer Seite gemacht wird
Ein Snapshot kann einfach mit dem Programm "wget" generiert werden. Die Optionen sehen wie folgt aus:
wget -r -l 5 -k -p -np url Die Option -r bedeutet, dass rekursiv in Verzeichnissen gesucht wird, -l 5 kann eine wichtige Option sein, vor allem dann, wenn die Seite nicht optimal programmiert ist und mit Links eine Endlosschleife generiert wird. Diese Option limitiert die Schleife auf 5 Links. -p veranlasst "wget" alle zugehörigen Daten zu laden, die für die Anzeige der Seite nötig sind. Damit lädt man auch zum Beispiel die dazugehörigen css Files herunter. -np bedeutet, dass nur Links verfolgt werden, die in Unterverzeichnissen liegen. Die Option -k wandelt Links so um, dass sie in einem Dateisystem angeschaut werden können.
Problem 1
 Dateinamen mit "wget" generiertDie Umwandlung der Dateinamen war nicht optimal und so wurde zum Beispiel ein File mit dem Namen „index.php?id=test“ erstellt. Das Problem ist, dass der Webserver ein File mit dem Namen „test.php“ sucht und versucht den Query „id=test“ zu übergeben. Da dieses File nicht existiert, funktioniert die ganze Verlinkung nicht mehr.
Problem 2 Man kann zwar mit der Option -l 5 eine Endlosschleife verhindern, jedoch hat man 5 Kopien einer gleichen Seite. Anstatt die eigentlichen Daten der Homepage, die in meinem Fall 29MB ausmachten wurden es so ca. 312MB.
Lösung Ich habe dazu ein Programm mit dem Namen Snapshot Cleaner geschrieben. Es wandelt alle Dateien um die ein ? enthalten. Dabei werden alle Referenzen, die in den anderen HTML Files vorkommen ebenfalls umgewandelt. Zudem erkennt das Programm File Duplikate unabhängig vom Namen und löscht die Duplikate. Dabei werden die Referenzen ebenfalls upgedatet. Die Duplikate werden anhand von gleichen MD5 Checksummen erkannt.
Das Programm kann mit folgenden Optionen gestartet werden:
- -dup Anweisung um alle Duplikate zu löschen und alle Referenzen, die auf das gelöschte Duplikat verweisen, anzupassen.
- -ren=[regexp] Der regexp Term ist per default so eingestellt, dass alle Namen welche ein ? erhalten umgewandelt werden.
- -prefix=[document] Werden Dateien umgewandelt, so erhalten sie den Namen der im Präfix angegeben wird plus eine fortlaufende Zahl.
- -failsafe=[failsafe] Kleiner Hack, denn es gibt Links bei denen kein Dateiname angegeben wird. Zum Beispiel ist der Link "www.test.bar/index.php?hallo" bei einigen Webservern äquivalent zu diesem Link: "www.test.bar/?hallo". Failsafe expandiert /? nach /failsafe?, wobei ich als failsafe index.php verwendet hatte.
- -absolute=[url] Wandelt absolute Pfade in relative um.
Das Programm löscht und verändert Daten. Unbedingt ein Backup machen!! Niemals mit Originalen arbeiten, immer mit Kopien!
Das Programm beherrscht nur flache Dateistrukturen, Rekursionen und Links wie "test.html" funktionieren nicht. Das Programm ist unter der LGPL Lizenz verfügbar. Es wird wie folgt aufgerufen:
java -jar sc.jar [options] In meinem Fall hatte der Befehl so ausgesehen:
java -jar /tmp/sc.jar -dup -ren="(?i).*\?.*" -prefix=document -failsafe=index.php -absolute=http://www.nope.tv/oldschool/10/10.1/ > /home/draft/nope-10.1.log Tipp für Apache User mit mod_deflate: Daten können mit gzip -9 *.html massiv verkleinert werden. Die Daten werden ebenfalls komprimiert übertragen, falls es der Browser unterstützt. Da die meisten Browser das können, wird viel Bandbreite gespart.
| Bemerkungen, Kommentare und Feedback
Du kannst auch selber einen Thread starten, indem du hier klickst. |
| Home
| Artikel / Tipps und Tricks | | Artikel Navigation | |
|
|