Wget: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
K Textersetzung - „== Syntax ==“ durch „== Aufruf ==“ |
||
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 29: | Zeile 29: | ||
# apt install wget | # apt install wget | ||
== | == Aufruf == | ||
=== Optionen === | === Optionen === | ||
==== Log- und Eingabe-Optionen ==== | ==== Log- und Eingabe-Optionen ==== | ||
Zeile 279: | Zeile 279: | ||
* Dadurch werden alle der Reihe nach abgearbeitet. | * Dadurch werden alle der Reihe nach abgearbeitet. | ||
=== | === Problembehebung === | ||
== Konfiguration == | == Konfiguration == | ||
Zeile 290: | Zeile 290: | ||
==== Dokumentation ==== | ==== Dokumentation ==== | ||
===== RFC ===== | ===== RFC ===== | ||
===== Man- | ===== Man-Page ===== | ||
# wget | # wget | ||
===== Info-Pages ===== | ===== Info-Pages ===== | ||
Zeile 303: | Zeile 303: | ||
[[Kategorie:Linux/Befehl]] | [[Kategorie:Linux/Befehl]] | ||
[[Kategorie:Webclient]] | [[Kategorie:Webclient]] | ||
[[Kategorie:Linux/Datei/Download]] | |||
{{DEFAULTSORT:wget}} | {{DEFAULTSORT:wget}} | ||
</noinclude> | </noinclude> |
Aktuelle Version vom 12. November 2024, 19:38 Uhr
wget - Dateien nicht-interaktiv aus dem Internet herunterladen
Beschreibung
Nicht interaktiv
- wget kann im Hintergrund arbeiten, während der Benutzer nicht angemeldet ist.
- Im Gegensatz dazu erfordern die meisten Webbrowser die ständige Anwesenheit des Benutzers, was bei der Übertragung einer großen Datenmenge ein großes Hindernis darstellen kann.
- So können Sie einen Abruf starten und die Verbindung zum System trennen, während Wget die Arbeit beendet.
Protokolle
- HTTP-, HTTPS- und FTP-Protokolle sowie den Abruf über HTTP-Proxys.
- Wget kann Links in HTML-, XHTML- und CSS-Seiten folgen
- um lokale Versionen von entfernten Websites zu erstellen
- wobei die Verzeichnisstruktur der ursprünglichen Website vollständig wiederhergestellt wird.
- Dies wird manchmal auch als "rekursives Herunterladen" bezeichnet.
- Dabei beachtet Wget den Robot Exclusion Standard (/robots.txt).
- * Wget kann angewiesen werden, die Links in den heruntergeladenen Dateien so umzuwandeln, dass sie auf die lokalen Dateien verweisen, damit sie offline betrachtet werden können.
- Wget wurde so konzipiert, dass es auch bei langsamen oder instabilen Netzwerkverbindungen stabil arbeitet.
- Wenn ein Download aufgrund eines Netzwerkproblems fehlschlägt, wird er so lange wiederholt, bis die gesamte Datei abgerufen wurde.
- Wenn der Server eine Wiederholung unterstützt, weist es den Server an, den Download an der Stelle fortzusetzen, an der er unterbrochen wurde.
wget ist ein Programm, mit dem man direkt aus einem Terminal Dateien von FTP- oder HTTP-Servern herunterladen kann.
Das Programm ist sehr praktisch, wenn man in einem Shellscript Daten von Servern holen will, aber es ist auch ein sehr guter Downloadmanager.
Downloads können zu einem späteren Zeitpunkt an der abgebrochenen Stelle fortgeführt werden.
Installation
# apt install wget
Aufruf
Optionen
Log- und Eingabe-Optionen
Unix | GNU | Beschreibung |
---|---|---|
-i DATEI | --input-file=DATEI | Liest URLs aus einer Text- oder HTML-Datei aus |
-nv--no-verbose | Gibt nur die wichtigsten Informationen aus | |
-q | --quiet | Verhindert dass wget Informationen auf der Konsole ausgibt. |
-v | --verbose | Vollständige Ausgabe aller Informationen. (Standard) |
Download-Optionen
Unix | GNU | Beschreibung |
---|---|---|
-t <X> | --tries=<X> | Anzahl der Versuche <X>, die wget unternehmen soll eine Datei herunterzuladen. |
-c | --continue | Versucht einen teilweise durchgeführten Download fortzusetzen. |
-N | Lädt nur dann die Datei herunter, wenn die Datei neuer ist als eine Datei gleichen Namens auf dem Heimrechner. | |
-O DATEINAME | --output-document=DATEINAME | Schreibe in DATEI.
|
--user=<user> | Gibt einen Usernamen für HTTP bzw.
| |
--password=<password> | Gibt ein Passwort für HTTP bzw.
|
Verzeichnis-Optionen
Unix | GNU | Beschreibung |
---|---|---|
-P VERZEICHNIS | Erlaubt die Angabe eines Verzeichnisses, wo die heruntergeladene(n) Datei(en) gespeichert werden soll(en). | |
-nd--no-directories | Falls Dateien rekursiv heruntergeladen werden, so werden sie lokal in einem Verzeichnis gespeichert, | |
-x | --force-directories | Das Gegenteil von -nd.
|
Optionen für den rekursiven Download
Unix | GNU | Beschreibung |
---|---|---|
-r | --recursive | Aktiviert den rekursiven Download von Daten. |
-l <tiefe> | --level=<tiefe> | Anzahl der Schritte <tiefe>, die wget weiterverfolgen soll |
-k | --convert-links | Konvertiere nach dem Download externe Links zu internen, so dass ein HTML-Dokument Offline betrachtet werden kann. |
-A <acclist> | --accept <acclist> | Mit Kommata getrennte Liste an Datei-Erweiterungen, die heruntergeladen werden sollen |
-R <rejlist> | --reject <rejlist> | Mit Kommata getrennte Liste an Datei-Erweiterungen, die nicht heruntergeladen werden sollen |
-D DOMAINS | --domains=DOMAINS | Mit Kommata getrennte Liste an Domains, deren Links verfolgt werden sollen |
--exclude-domains | Eine Liste an Domains, die nicht beachtet werden sollen. |
Parameter
Umgebungsvariablen
Exit-Status
Anwendung
Einfacher Dateidownload
Grundsätzlich kann man eine Datei mit dieser Syntax in das aktuelle Verzeichnis laden:
wget http://example.com/folder/file
Anhalten und fortsetzen
Anhalten
$ [Strg] + c
Fortsetzen
$ wget -c [URL]
Ziel-Dateinamen
Dateien werden mit ihrem Originalnamen im aktuellen Verzeichnis gespeichert.
- Mit -O kann ein anderes Ziel angegeben werden.
$ wget -O [file-name] [URL]
Protokolldatei
Wenn Sie möchten, können Sie die Nachrichten/Informationen, die wget beim stdout produziert, auch in eine Protokolldatei umleiten.
- Dies kann mit der Kommandozeilenoption -o (Kleinbuchstaben) erfolgen.
$ wget -o [log-filename] [URL]
Bandbreite begrenzen
Während Sie wget verwenden, können Sie auch die Download-Geschwindigkeit begrenzen.
- Dies kann mit der Option -limit-rate geschehen, die einen Wert erfordert, der den Betrag in Form von Bytes pro Sekunde angibt.
- Die Menge kann in Bytes, Kilobytes mit dem Suffix „k“ oder Megabyte mit dem Suffix „m“ angegeben werden.
$ wget –limit-rate==[amount] [URL]
Wenn man bei einem Download gleichzeitig noch schnell surfen will, ist es praktisch, die Downloadrate zu begrenzen.
- In diesem Beispiel wird sie auf 40 kB/s begrenzt:
wget --limit-rate=40000 http://example.com/folder/file
Timeout
Read Timeout ist die Zeitspanne (in Sekunden), in der wget nach Daten sucht (falls keine Daten empfangen werden), bevor der Download neu gestartet wird.
- Standardmäßig beträgt der Lese-Timeout 900 Sekunden, aber Sie können dies mit der Option -read-timeout ändern.
$ wget –read-timeout==[time in seconds] [URL]
Download-Versuche
Wann immer Ihr Download aufgrund einer schlechten Internetverbindung oder eines anderen Fehlers unterbrochen wird, versucht das Tool, den Download selbst fortzusetzen.
- Standardmäßig versucht das Dienstprogramm 20 Mal und stoppt dann.
- Wenn Sie jedoch die Anzahl der Versuche erhöhen oder verringern möchten, können Sie dies mit der Befehlszeilenoption -t tun.
$ wget -t [no.-of-retries-you want] [URL]
Debug-Informationen
Wenn Sie möchten, können Sie auch den Befehl wget verwenden, um zusätzliche Informationen zum Downloadvorgang anzuzeigen.
- Diese Informationen sind nützlich für Debugging-Zwecke, wenn das Tool nicht ordnungsgemäß funktioniert.
- Auf die Funktion kann über die Befehlszeilenoption –debug oder -d zugegriffen werden.
$ wget –debug [URL]
Fortschrittsanzeige
Wenn Sie möchten, können Sie auch die Download-Fortschrittsanzeige ändern, die wget in der Ausgabe anzeigt.
- Es gibt zwei Arten von Fortschrittsanzeigen: Balken (Standard) und Punkt.
- Wenn der Ausgang jedoch nicht auf dem Terminal (TTY) angezeigt wird, wird standardmäßig die Punktanzeige verwendet.
Mit der Option –Fortschritt können Sie die Art des Kennzeichens wählen, falls Sie das Standardverhalten überschreiben möchten.
$ wget --progress==dot [URL]
Dateidownload
- Allen Bilder herunterladen
wget -r --level 3 -np -p --user-agent="Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5" http://example.com/dir/
- -p gibt vor, den Inhalt der Seite herunterzuladen
- rekursiv (-r) bis zu einer
- Tiefe von 3 (--level 3) vorgegangen wird,
- Übergeordnete Verzeichnisse werden ignoriert (-np).
- Außerdem gibt wget vor, als Mozilla unterwegs zu sein (--user-agent), da viele Seiten wget blockieren.
Zudem ist es möglich, nur spezielle Dateitypen zu bekommen.
- Bei diesem Aufruf werden rekursiv die Dokumente nach *.jpg und *.png durchsucht und abgespeichert:
wget -r -A jpg,png http://example.com/dir/
Und mit diesem Befehl werden alle Dateien außer *.jpg und *.png heruntergeladen
wget -r -R jpg,png http://example.com/dir/
- Beispiel für PDF-Dateien
wget -p -r -nd -l 4 -e robots=off -A pdf http://example.com/
-e robots=off sorgt dafür, dass wget die robots.txt ignoriert und auch Links folgt, die in dieser Datei ausgeschlossen sind.
Wiederholungsfunktion
- Was ist, wenn die Internetverbindung abbricht?
- Dann kann man den Download auch auf eine begrenzte oder unbegrenzte Anzahl von Wiederholungen schalten:
wget -t X http://example.com/folder/file
Das X steht wie für eine Zahl entsprechend der Anzahl der gewünschten Wiederholungen. 0 steht für unendlich.
Referer ändern
Manche Downloadserver erlauben einen Download nur, wenn der Benutzer von einer bestimmten Adresse kommt.
- Diese ist immer die, von der normalerweise der Download startet.
wget --referer=http://von.dieser.seite.com/me/ich http://example.com/folder/file
Im Hintergrund herunterladen
Bei großen Dateien bietet es sich an, den Download im Hintergrund zu starten.
- wget läuft dann eigenständig im Hintergrund und schreibt im Download-Verzeichnis eine log-Datei:
wget -b http://example.com/folder/file
Websites offline speichern
wget -r -k -E -l 8 http://example.com
- Die Option -r sorgt dafür, dass rekursiv bis zu einer Tiefe von 8 (-l 8) vorgegangen wird
- -k konvertiert die Links, so dass sie lokal funktionieren und
- -E erzwingt die Endung .html für alle Dateien (ist dann nützlich, wenn .php- oder .asp-Seiten geladen werden.
- Beispiel
$ wget -r -k -E -l 3 --random-wait --user-agent='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1' http://example.com
Eine alternative Möglichkeit
Tarballs automatisch entpacken
Um .tar.gz-Archive direkt zu entpacken ohne sie zwischenzuspeichern kann man folgenden Befehl nutzen:
wget -q -O - http://example.com/folder/file.tar.gz | tar xvzf -
Die Option -q sorgt dafür, dass keine Informationen ausgegeben werden, die tar nicht verarbeiten könnte.
- Mit -O - wird wget angewiesen die Datei direkt auf die Standardausgabe STDOUT zu schreiben.
- Mittels | wird die Standardausgabe STDOUT auf die Standardeingabe STDIN für das nächste Programm (in diesem Fall tar) umgeleitet.
Nun wird die Datei ganz normal entpackt, wobei x für extrahieren, v für verbose (also viele Infos ausgeben), z für dekomprimieren steht.
- Mit f - wird die Datei von der Standardeingabe STDIN (die in diesem Fall ja von wget kommt) gelesen.
- Nach diesem Befehl befinden sich nur die entpackten Dateien und Verzeichnisse, nicht jedoch die eigentliche .tar.gz-Datei im aktuellen Verzeichnis.
Zeitsteuerung von Downloads
Um Downloads zum Beispiel um 13:40 Uhr zu beginnen, hilft folgendes Skript:
#!/bin/sh cd ~/Downloads echo "\033[49;1;34mFolgende Datei soll heruntergeladen werden:" echo "\033[49;1;32m" echo "$1" | awk -F / '{print $NF}' echo echo "\033[49;1;35mWann soll der Download starten? (Format: hhmmss)" echo "\033[0m" read u if [ $u = "next" ] then ps -o etime,pid --no-headers -C dl | awk '{print $1,$2}' | sort -r | awk '{print $2}' > ~/.log$$ var=`head -n 1 ~/.log$$` if [ $$ -ne $var ] then echo "Nach dem letzten Download wird dieser Download gestartet." fi while [ $$ -ne $var ] do sleep 1 ps -o etime,pid --no-headers -C dl | awk '{print $1,$2}' | sort -r | awk '{print $2}' > ~/.log$$ var=`head -n 1 ~/.log$$` done rm ~/.log$$ elif [ $u = "now" -o $u = "jetzt" -o $u = "Jetzt" ] then echo "Der Download startet jetzt!" else while [ $(date +%H%M%S) -ne $u ] do sleep 1 done fi wget -c $1 echo "Der Download ist beendet."
Der Name des Skripts sollte dl heißen, ansonsten muss man im Skript dl durch den Namen ersetzen.
Das Skript ausführbar machen und am besten in einem Pfad speichern der in $PATH enthalten ist.
- Dann kann der Download wie folgt gestartet werden:
dl http://example.com/folder/file
Daraufhin erscheint die Frage, wann der Download starten soll.
- Gültige Eingaben sind
- Jetzt, jetzt, now für sofort starten
- 134000 für 13:40 Uhr oder 121314 für 12:13 Uhr und 14 Sekunden
- next, startet direkt nach den bisher gestarteten Downloads.
So kann man
- einen Download sofort starten, und bei 5 weiteren next eingeben.
- Dadurch werden alle der Reihe nach abgearbeitet.
Problembehebung
Konfiguration
Dateien
Anhang
Siehe auch
Sicherheit
Dokumentation
RFC
Man-Page
- wget
Info-Pages
Links
Projekt
Weblinks
- cURL - wenn wget nicht mehr ausreicht