Mit Wget sichern und spiegeln Sie Webseiten; mit Netrw und Cryptcat übertragen Sie Daten ohne Server, etwa bei Backups im Notfall.
Es gibt viele Situationen, in denen es gilt, eine Webseite oder andere Daten ohne gewohnte Werkzeuge zu übertragen – etwa während Entwicklungsphasen oder nach einem Crash. Der Klassiker unter den Anwendungen zur Datenübertragung – auf Client- wie auf Server-Seite – ist FTP. Von Haus aus unverschlüsselt und zudem zwei Ports belegend, gilt FTP heute als überholt, und andere Mechanismen wie SFTP oder diverse Cloud-Ansätze ersetzen es mehr und mehr. In jedem Fall brauchen Sie jedoch einen Server als Dienst auf dem ausliefernden Rechner.
Wget
Auf Client-Seite bietet sich Wget [1] an, mit der Einschränkung, dass es nur Daten von FTP- und HTTP-Servern lädt. Als Daten kommen hierbei einzelne Dateien oder ganze Verzeichnisbäume infrage. Das Programm integriert sich gut in Shell-Skripte und vermag abgebrochene Transfers fortzusetzen. Zahlreiche Optionen erlauben einen vielfältigen Einsatz für Downloads oder Auswertungen (siehe Tabelle “Wget-Optionen”).
|
Syntax |
Aufgabe |
|---|---|
|
|
Zielverzeichnis für den Download |
|
|
HTTPS verwenden |
|
|
Benutzername angeben |
|
|
Passwort angeben |
|
|
kein Abgleich des Zertifikats |
|
|
Verzeichnisstruktur beim Download auflösen |
|
|
Verzeichnisstruktur übernehmen |
|
|
mit Verzeichnisstruktur herunterladen |
|
|
Anzahl verwendeter Ebenen |
|
|
externe Links zu lokalen konvertieren |
|
|
Dateinamenserweiterung anpassen |
|
|
Zusatzanweisung aus |
|
|
|
|
|
angegebene Dateitypen herunterladen |
|
|
angegebene Dateitypen nicht herunterladen |
|
|
Links zu Domains folgen |
|
|
Links zu Domains nicht folgen |
|
|
URLs aus HTML/Text-Datei ausgeben |
|
|
Anzahl Download-Versuche |
|
|
abgebrochenen Download fortsetzen |
|
|
Browser-Typ angeben |
|
|
Referer (vorhergehende Seite) angeben |
|
|
nur neuere Dateien herunterladen |
|
|
Ausgabe in Datei schreiben |
|
|
keine Ausgabe im Terminal |
Webseiten spiegeln
Damit die heruntergeladene Seite lokal funktioniert, wandeln Sie mit der Option -k die Links in lokale Referenzen um. Des Weiteren benutzen Sie -r für das Absteigen in den Verzeichnisbaum. Die maximale Tiefe dafür geben Sie bei Bedarf mit -l Tiefe an.
Durch -E wandeln Sie eventuell unpassende Erweiterungen von Dateinamen ab. Damit die Software die robots.txt hier nicht auswertet, setzen Sie eine zusätzliche Anweisung. Die erste Zeile von Listing 1 zeigt die vollständige Syntax dafür.
Abbildung 1 und**2 zeigen den Abruf und das Auflisten des Verzeichnisinhalts. Dabei sehen Sie, dass Wget dafür ein eigenes Unterverzeichnis anlegt. Mit einem beliebigen Webbrowser betrachten Sie die lokale Kopie. Im Beispiel auf dem hier verwendeten Testsystem funktionierte dies mit dem Kommando aus der zweiten Zeile von Listing 1.
Listing 1
wget -e robots=off -r -k -E -l 3 http://www.example.com firefox wget/192.168.0.83/index.html wget http://example.com/Ordner/Datei wget -e robots=off -r -nd -A Endung,Endung http://www.example.com wget -np -p --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" http://192.168.0.83

Abbildung 1: Bei Bedarf spiegeln Sie mit Wget eine Webseite mit allen Unterseiten in ein lokales Verzeichnis auf Ihrem Rechner, um sie offline anzusehen.
Dateien herunterladen
Wenig spektakulär verläuft das Herunterladen von Dateien. Hierzu genügen die Angabe des Dateinamens und der genaue Pfad (Listing 1, Zeile 3). Abbildung 3 zeigt ein Beispiel für das Vorgehen. Es funktionieren hier keine der bekannten Wildcards. Sie müssen also zwingend den Dateinamen vollständig eingeben, sonst erhalten Sie nur eine 404-Meldung.

Abbildung 3: Wenn Sie versuchen, eine Datei mit Wget herunterzuladen, müssen Sie den Namen der Datei komplett und ohne Wildcards angeben.
Zum Herunterladen mehrerer Dateien mit derselben Dateiendung verwenden Sie die Option -A Endung; mehrere Angaben zur Endung trennen Sie mit Kommas. Umgekehrt verhindern Sie das Herunterladen von Dateien mit einer bestimmten Endung durch -R Endung. Auch hier dürfen Sie wieder mehrere Endungen angeben, jeweils durch Kommas getrennt.
Dabei haben Sie die Wahl, die Verzeichnisstruktur zu erhalten oder alle Dateien ins aktuelle Arbeitsverzeichnis zu schreiben (Option -nd). Ohne also sich über den oder die Dateinamen zu informieren, geben Sie den Aufruf aus der vierten Zeile von Listing 1 ein.
Abbildung 4 zeigt den Ablauf. Hier lässt sich die Arbeitsweise von Wget erkennen: Das Programm lädt zunächst alle Dateien herunter und entfernt anschließend die nicht erwünschten. Nur die Files mit der angegebenen Endung verbleiben im aktuellen Arbeitsverzeichnis.

Abbildung 4: Weisen Sie Wget an, nur Dateien mit einer bestimmten Endung herunterzuladen, zieht das Programm trotzdem zuerst alle Files, die es findet, und löscht anschließend die unerwünschten.
Wget mit Tarnkappe
Manche Webserver erwarten einen bestimmten Browser und weisen Abfragen anderer Clients ab. Damit Sie mit Wget trotzdem ans Ziel kommen, übermitteln Sie die passende Kennung in der Form -np -p --user-agent "Browser". Das sieht dann so aus wie in Zeile 5 von Listing 1.
Diese Zeichenkette findet sich auch in der Log-Datei des Webservers wieder, bei einer Apache-Standardinstallation auf Debian 9 beispielsweise unter /var/log/apache2/access.log (Listing 2). In Zeile 2 tritt Wget ganz offen auf, in Zeile 3 tarnt es sich dagegen als Firefox (--user-agent="Mozilla/5.0 ...").
Listing 2
[...] 192.168.0.82 - - [05/Oct/2017:19:52:41 +0200] "GET / HTTP/1.1" 200 1609 "-" "Wget/1.18 (linux-gnu)" 192.168.0.82 - - [05/Oct/2017:19:53:13 +0200] "GET / HTTP/1.1" 200 1609 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" [...]
Netrw
Ganz ohne Server kommen Netread und Netwrite beim Transfer von Daten aus. Damit bietet das Duo eine Möglichkeit, um selbst auf IoT-Geräten mit Linux Daten aller Art zu übertragen. Die beiden Programme [2] stecken häufig im Paket netrw und verfügen über keinerlei besondere Abhängigkeiten – zur Not nehmen Sie sie auf einem USB-Stick oder einer SD-Karte mit.
Einen kleinen Haken aber hat der Einsatz der beiden Helfer doch: Vor jedem der beteiligten Rechner muss entweder ein Mensch sitzen, der die Kommandos ausführt, oder ein Skript übernimmt diese Aufgabe. Durch den persönlichen Einsatz stellen Sie aber sicher, dass Sie alles, was geschieht, direkt mitbekommen.
Vor dem Übertragen mehrerer Dateien fassen Sie diese möglichst in einem Archiv zusammen und komprimieren es. Das spart Zeit und Arbeit. Beachten Sie, dass der Transfer selbst nicht verschlüsselt erfolgt. Stattdessen müssen Sie gegebenenfalls die Nutzlast vor dem Versenden entsprechend vorbereiten. Zudem können Sie jeweils nur eine Übertragung vornehmen, nach deren Abschluss sich Netread automatisch beendet.
Die Tabelle “Netread/Netwrite: Optionen” zeigt Ihnen die wichtigsten Optionen für die Arbeit mit den beiden Programmen. Die Exit-Codes für den Einsatz im Shell-Skript lauten 0 für eine Übertragung ohne Fehler, 1 für allgemeine und 2 für Prüfsummenfehler.
|
Syntax |
Aufgabe |
|---|---|
|
|
Ziel angeben, wenn Verbindung durch Firewall führt |
|
|
Daten in angegebene Datei schreiben (Netread) |
|
|
Daten von angegebener Datei lesen (Netwrite) |
|
|
Algorithmus für Prüfsumme angeben |
|
|
UDP statt TCP benutzen |
|
|
Fortschrittsanzeige (n kByte/s) |
|
|
Fortschrittsanzeige, (n MByte/s) |
|
|
wichtige Zusatzinformationen ausgeben |
|
|
alle Zusatzinformationen ausgeben |
Zuerst startet die empfangende Seite Netread, wobei Sie mindestens die Portnummer und den Dateinamen für die Ausgabe (Standardausgabe oder Option -o Datei) angeben. Bei Problemen hilft der Einsatz des Parameters -vv weiter. Durch die Firewall klappt eine Verbindung mittels der Angabe des sendenden Rechners (-f Ziel).
Zum Senden geben Sie mindestens die Quelldatei und den Zielrechner an. Nach dem Übertragen der Datei beendet sich Netread. Abbildung 5 zeigt (beidseitig) das Übertragen der Daten.
Falls Sie mehrere Dateien übertragen möchten, helfen Tar und die Pipe dabei weiter: Anstelle der Angabe von Quelle oder Ziel steht Tar vor Netwrite oder nach Netread in der Pipe. Abbildung 6 und Abbildung 7 zeigen zudem noch den Einsatz der Fortschrittsanzeige.
Beachten Sie, dass auf der Sendeseite mit Tar die Option v (Anzeige der Dateien) nicht möglich ist: In diesem Fall würde die Ausgabe des Terminals übertragen, nicht die Nutzlast.
Cryptcat
Als Alternative zu Netrw bietet sich Cryptcat an, ein etwas entschärfter und verschlüsselnder Klon von Netcat, der sich ebenfalls dazu eignet, um Daten zu übertragen [3]. Dies geschieht ähnlich wie beim Einsatz von Netwrite und Netread.
Cryptcat verschlüsselt die Verbindung. Falls Sie dazu kein eigenes Kennwort angeben, verwendet die Software das fest verdrahtete Passwort metallica. Die wichtigsten Optionen des Tools fasst die Tabelle “Cryptcat-Optionen” zusammen.
|
Syntax |
Aktion |
|---|---|
|
|
Angabe des Passworts zum Aufbau der Verbindung |
|
|
UDP statt TCP verwenden |
|
|
Port-Angabe |
|
|
Empfangsmodus |
|
|
Portscan-Modus |
|
|
Ausgabe wichtiger Meldungen |
|
|
Ausgabe ausführlicher Meldungen |
|
|
Host/DNS-Abfragen unterbinden |
|
|
Timeout für Verbindungen setzen |
Mit Cryptcat übertragen Sie Daten per Pipe; im Normalfall senden Sie einen Verzeichnisbaum per Tar über das Programm. Abbildung 8 zeigt einen typischen Transfer. Bei Bedarf transportieren Sie auf diese Weise auch die Ausgabe von Programmen; sogar ein Mini-Chat mit je zwei Terminals ist möglich.
Fazit
Der Transfer von Daten gelingt selbst ohne Server-Dienste mit Linux-Bordmitteln auf vergleichsweise einfache Weise. Mit Wget sichern Sie komplette Webseiten samt Unterverzeichnissen. Das Duo Netread/Netwrite hilft bei einfachen Dateitransfers in beide Richtungen. Cryptcat bietet eine ähnliche Funktion, sichert den Kanal aber mit einem Passwort ab.
Der Autor
Harald Zisler beschäftigt sich seit vielen Jahren mit FreeBSD und Linux. Zu Technik- und EDV-Themen verfasst er Bücher und Beiträge für Zeitschriften. Aktuell ist beim Rheinwerk Verlag die vierte Auflage von “Computer-Netzwerke” erschienen.
Infos










