freeX: Tips & Tricks
|
Mal eben ein Web-Verzeichnis spiegeln
Es ist schon sehr hilfreich, daß viele Informationen, Howtos, Tutorials, FAQs und Artikel im Internet verfügbar sind. Wer sich mit einem Problem auseinandersetzt und sich auch die Zeit nimmt, Dokumentation zu lesen, wird bestimmt irgendwo im Welt-Weiten-Web fündig. Beim Finden helfen verschiedene Suchmaschinen, die Webserver indizieren und zu ein paar Stichwörtern in Windeseile eine Liste von URLs ausspucken.
Manchmal möchte man jedoch nicht nur Informationen zu einem einzigen Satz Stichwörter haben, sondern es ergeben sich Folgefragen. Wer Software entwickelt, findet oftmals z.B. die Beschreibung jeder einzelnen Funktion im Web. Bei der Programmierung müssen die konkreten Argumente und Seiteneffekte der verschiedenen Funktionen kontrolliert werden.
Für jede Funktion kann man natürlich wieder die Suchmaschine seiner Wahl fragen und sich den passenden Link heraussuchen. Praktischer wäre es jedoch in vielen Fällen, wenn die Dateien lokal vorlägen und man nur kurz »grep« aufrufen müßte, um die passende Seite(n) zu finden. Das ist in vielen Fällen erheblich schneller als den Weg über ein Suchmaschine oder die Suchmaschine der jeweiligen Website zu gehen.
Gesucht wird daher ein Programm, mit dem man einen Webserver spiegeln kann. Hilfe leistet dabei »wget«, ein Programm, das Dateien aus dem Web auf den lokalen Rechner lädt. Meistens wird »wget« dazu eingesetzt, einzelne Dateien unter Angabe der korrespondierenden URL herunterzuladen. Dazu werden die URLs der jeweiligen Dateien einfach in der Kommandozeile angegeben:
wget url1 url2 ...
Es wird neben HTTP sogar auch das Protokoll FTP unterstützt. Selbst diejenigen, die hinter einer restriktiven Firewall arbeiten, können mit »wget« arbeiten, denn mit dem Parameter »--passive-ftp« wird auf passives FTP umgestellt. Damit jedoch nicht genug, denn »wget« kann auch dafür genutzt werden, ein komplettes Verzeichnis von einem Web- oder FTP-Server auf den eigenen Rechner zu kopieren.
Mit dem Parameter »-r« arbeitet »wget« rekursiv die Referenzen in der angegebenen Datei (die sich hinter einer URL verbirgt) ab. Dabei ist jedoch Vorsicht geboten, denn wenn ein Link den ursprünglichen Webserver verläßt, setzt »wget« die Reise auch dorthin fort. Mit einem passenden Startpunkt sollte es möglich sein, das praktisch gesamte Web herunterzuladen, ausreichend Festplattenkapazität und Geduld vorausgesetzt.
Das wird jedoch meistens nicht gewünscht, sondern stattdessen sollen alle Dateien innerhalb eines bestimmten Verzeichnisses heruntergeladen werden. Dazu muß lediglich verhindert werden, daß »wget« die Hierarchieebene in die nächst höhere verläßt. Dieses begrenzt die Einstellung »--no-parent«.
Wer den Befehl nun ausprobiert, wird feststellen, daß alle Dateien in einem Verzeichnis gespeichert werden, das den Namen des Webservers (bzw. FTP-Servers) trägt. »wget« bildet die Struktur des Webs im lokalen Dateisystem ab. Wenn das jedoch nicht gewüscht wird, kann mit der Einstellung »--no-host-directories« die Erzeugung dieses Verzeichnisses verhindert werden.
Allerdings bleiben dann immer noch die Verzeichnisse des Servers
übrig, die im ursprünglichen Pfad enthalten sind. Das läßt sich
jedoch auch verhindern, denn mit dem Parameter »--cut-dirs=
Als Beispiel soll das Archiv des aktuelle Linux-Kernels 2.5 dienen. Mit dem Befehl
wget -r --no-parent http://ftp.kernel.org/pub/linux/kernel/v2.5/
wird das Verzeichnis gespiegelt und alle Dateien werden lokal im Verzeichnis »ftp.kernel.org/pub/linux/kernel/v2.5« gespeichert. Mit dem Befehl
wget -r --no-parent --no-host-directories --cut-dirs=4 http://ftp.kernel.org/pub/linux/kernel/v2.5/
werden die Dateien jedoch vollständig im aktuellen Verzeichnis
gespeichert. Zu Schluß sei noch auf den Parameter
»--limit-rate=
Somit limitiert die Angabe »--limit-rate=10k« die genutzte Bandbreite auf 10kB/s und »--limit-rate=1m« selbige auf 1MB/s. Die verwendete Technik funktioniert allerdings nicht bei kleinen Dateien und Bandbreiten kleiner als 1.5kB/s.