Inhaltsverzeichnis

, , , , , , , , , , , , ,

wget (1) - Die Antwort auf (fast) alle HTTP-, HTTPS- und FTP-Download-Fragen

letzte inhaltliche Überarbeitung: 18.08.2018

1. Einführung

(GNU) wget ist ein HTTP-, HTTPS- und FTP-Download-(Kommandozeilen)-Programm. Es ist eine OpenSourceSoftware unter der GPL. In der Zwischenzeit ist 'wget' außer für Linux auch für viele andere Betriebssysteme erhältlich. So existiert ein Port auf Windows. Man erhält einen sehr leistungsfähigen „Website“-Grabber zum Nulltarif.

Das Programm ist extrem flexibel und kann auch die kompliziertesten Aufgaben erfüllen - sofern man die Syntax beherrscht. Deshalb zu Beginn ein paar Syntax-Grundlagen:

2. Syntax

2.1 Kommandozeile

wget [option]... [url]...

http://host[:port]/verzeichnis/datei
ftp://host[:port]/verzeichnis/datei

http://username:passwort@host[:port]/verzeichnis/datei
ftp://username:passwort@host[:port]/verzeichnis/datei

2.2 einfache Optionen für den Anfang

Die Optionen sind, wie auch bei anderen Linux-Programmen und -Befehlen in einer kurzen (mit einem „Minus“) oder in einer langen Schreibweise (mit zwei „Minus“) möglich.

'-V'
'--version'
   Anzeige/Abfrage der verwendeten Programmversion.
'-h'
'--help'
   Anzeige der Kommandozeilenoptionen und kurzer Überblick zur
   anzuwendenden Syntax.
'-b'
'--background'
   Das Programm geht nach dem Start mit dieser Option in den
   Hintergrund. Wenn keine Ausgabedatei (mit Option '-o')
   angegeben wurde, wird die Ausgabe standardmäßig nach
   'wget-log' geleitet.
'-e command'
'--execute command'
   Führt einen Befehl aus als wenn dieser in der Optionsdatei
   '.wgetrc' stehen würde. Der so angegebene Befehl wird nach
   den in der Datei '.wgetrc' stehenden Befehlen ausgeführt,
   so dass der hier angegebene Befehl faktisch "über" denen
   aus der Optionsdatei steht.

2.3 Optionen zum Logging und Eingabe- /Ausgabe-Datei

'-V'
'--version'
   Anzeige/Abfrage der verwendeten Programmversion.
'-o Ausgabe-Datei'
'--output-file=Ausgabe-Datei'
   Schreibt alle Logmeldungen (die sonst auf die Standardkonsole
   ausgegeben würden) in die Logdatei "Ausgabe-Datei"
'-a Ausgabe-Datei'
'--append-output=Ausgabe-Datei'
   Wie vorher. Aber: Wenn Ausgabe-Datei schon vorhanden ist,
   werden neue Meldungen nur angehängt (append), die alte Datei
   wird nicht überschrieben.
'-d'
'--debug'
   Ausgabe zusätzlicher "Debug"-Infos (Fehlersuche).
   Dazu muss 'wget' mit debug-Unterstützung kompiliert worden
   sein!
'-q'
'--quiet'
   Unterdrückung der Ausgabe von Meldungen.
'-v'
'--verbose'
   Schaltet die ausführliche Meldungsausgabe ein. Die
   Standardeinstellung ist 'verbose'.
'-nv'
'--non-verbose'
   Schaltet die ausführlichen Meldungen aus, ist aber nicht
   komplett "stumm". Dazu muss die Option '-q' oder '---quiet'
   benutzt werden.
'-i Eingabe-Datei'
'--input-file=Eingabe-Datei'
   Liest die abzurufenden Dateien/URL's aus der Textdatei
   "Eingabe-Datei".
'-F'
'--force-html'
   Eingabe-Datei als HTML-Datei behandeln. Ermöglicht das
   Verwenden relativer Links.
'-B URL'
'--base=URL'
   In Verbindung mit '-F' Angabe einer Basis-URL als Vorsatz
   für die relativen Links in der mit '-i' angegebenen
   URL-Quell-Datei.

2.4 Download-Optionen

'--bind-adress=ADDRESSE'
   Binden an bestimmte IP-Adresse. Hilfreich bei Rechnern
   mit mehreren IP-Adressen (Steuerung welche IP-Adresse
   als Quelle der Anfrage übergeben wird). Möglich als
   IP-Adresse oder Host-Name.
'-t ANZAHL'
'--tries=ANZAHL'
   Anzahl der Wiederholungsversuche angeben (bei
   nichterfolgreichen Abrufen).
'-O Datei-Name'
'--output-document=Datei-Name'
   Die abgerufenen Dateien werden aneinandergehängt
   und in eine große Datei 'Datei-Name' geschrieben.
   Wenn 'Datei-Name' schon vorhanden ist, wird die
   Datei überschrieben.
   Diese Option setzt '-t' automatisch auf 1.
'-nc'
'--no-clobber'
   Eine mehrfach abgerufene Datei, die in das selbe
   Verzeichnis geschrieben wird, bewirkt ein Überschreiben
   der Ursprungsdatei.
   Wenn 'wget' ohne '-N', '-nc' oder '-r' aufgerufen wird,
   wird die Originaldatei erhalten und jede weitere mit
   gleichem Namen mit einem jeweils um 1 erhöhten numerischen
   Zusatz, beginnend bei 1, in das Verzeichnis kopiert.
   (Bsp.: Datei Datei.1 Datei.2)
'-c'
'--continue'
   Fortsetzen von unterbrochenen Downloads.
'--progress=[dot|bar]'
   Festlegung der Fortschritts-Anzeige-Elemente.
   Möglich sind 'dot' - Punkte, oder 'bar' - senkrechte
   Striche.
'-N'
'--timestamping'
   "Einschalten" der Überprüfung des Zeitstempels, d.h. es
   werden nur Dateien geladen deren Zeitstempel (letzte Änderung)
   neuer ist als bei der lokal vorhandenen Datei.
'-S'
'--server-response'
   Zeigt die zurückgesendeten Header der HTTP-Server und die
   Antworten der FTP-Server an.
'--spider'
   Wget verhält sich wie ein 'Web-Spider'. Die Dateien werden
   nicht heruntergeladen, es wird nur das Vorhandensein der
   Datei überprüft.
   z.Bsp. Kontrolle der Gültigkeit der Bookmark-Links:
   wget --spider --force-html -i bookmarks.html
'-T Sekunden'
'--timeout=Sekunden'
   Setzt den Lese-Timeout auf 'Sekunden'. Standardmäßig ist
   dieser auf 900 s (15 min) gesetzt.
'--limit-rate=Menge'
   Setzt ein max.-Limit für die Downloadrate. Dadurch Festlegung
   des Einflusses auf die anderen Download-User - man ist ja
   nicht allein im LAN!
   Angabe mit Zusatz 'k' -> kBytes/s, 'M' -> MBytes/s
   (Bsp.: --limit-rate=90k -> Begrenzung auf 90 kBytes/s)
'-w seconds'
'--wait=seconds'
   Wartet die angegebene Anzahl an Sekunden zwischen den
   Abrufen.
   Die Benutzung dieser Option ist zu empfehlen, um die Server-
   Last durch etwas seltenere Anfragen gering zu halten.
   Die Zeitangabe kann statt der standardmäßig verwendeten
   Zeiteinheit in Sekunden auch in Minuten (durch Verwendung
   des 'm' hinter der Zeitangabe), Stunden ('h'-Erweiterung)
   oder in Tagen ('d'-Erweiterung) erfolgen.

   Angabe eines großen Wertes ist empfehlenswert, wenn das
   Netzwerk oder der Ziel-Host u.U. "down" ist, so dass Wget
   lange genug mit einer wiederholten Anfrage wartet bis evtl.
   der Fehler behoben ist.
'--waitretry=seconds'
   Wenn Sie nicht wollen, dass Wget zwischen jeder Abfrage so
   lange wartet, sondern nur bei fehlgeschlagenen Abrufen,
   dann benutzen Sie diese Option. Wget wird nach jedem
   fehlgeschlagenen Abruf die Wartezeit bis zum nächsten
   Versuch um 1 Sekunde erhöhen, bis die maximale, hier
   angegebene, Zeit erreicht ist.
   Bsp.: Wert = 10
         1 + 2 + ... + 10 = 55 Sekunden

   Beachte dass diese Option standardmäßig in der globalen
   'wgetrc'-Datei aktiviert ist.
'--random-wait'
   Manche Web-Sites analysieren die Zeit zwischen den Abrufen
   von Downloads um solche Abruf-Programme wie Wget an den
   gleichmäßigen Mustern zu erkennen. Diese Option bewirkt
   eine variierende Wartezeit zwischen den Anfragen in einem
   Bereich von 0 bis 2 * 'wait' Sekunden.
'-Y on/off'
'--proxy=on/off'
   Aktivieren der Proxy-Unterstützung. Diese ist standardmäßig
   aktiviert, wenn die entsprechende Umgebungsvariable
   definiert ist.
'-Q quota'
'--quota=quota'
   Festlegen von Download-Quotas (Begrenzungen) für
   automatische Abrufe. Der Wert kann in Bytes (Standard),
   Kilobytes (mit 'k' Zusatz) oder Megabytes (mit
   'm'-Zusatz) angegeben werden.

   Beachte dass Quotas nie auf den Download einer einzelnen
   Datei wirken. Sie wirken nur wenn mehrere Dateien abgerufen
   werden sollen.

   Setzen des Quotas auf '0' oder 'inf' hebt das Download-
   Limit wieder auf.

2.5 Optionen für HTTPS

'--no-check-certificate'
   Dient dem Umgehen von Abbrüchen oder Fehlermeldungen bei
   HTTPS-Abrufen. Es kann sehr viele Gründe für entsprechende
   Fehlermeldungen oder Abbrüche bei HTTPS-Downloads geben.

2.6 Optionen für Nutzung von Proxy-Servern

Proxy-Server als Umgebungs-Variable „exportieren“:

export https_proxy="https://proxy.local.biz:3128/"
wget --http-user="USER" --http-password="PASSWORT" wget https://www.linux-magazin.de/foo/bar.html
Proxy-Server + -User + -Passwort als Umgebungs-Variable „exportieren“:
export https_proxy="https://PROXY-USERNAME:PROXY-PASSWORT@SERVER-NAME:PORT/"
Mit Beispieldaten:
export https_proxy="https://heiko:GeheimesPasswort@proxy.local.biz:3128/"
wget https://www.linux-magazin.de/foo/bar.html

2.7 Beispiele

Spiegelung des SuSE-update-Mirrors:

lin-server:~ #
wget -t 5 -r -m -c -nH ftp://ftp.htwk-leipzig.de/pub/suse.com/ftp.suse.com/suse/i386/update/8.1 --limit-rate=65k --proxy=off --cut-dirs=2

Spiegelung der Mcafee-Update-Verzeichnisse für 4.x:

lin-server:/ftp-mirror # 
wget -t 5 -m -c ftp://ftp.mcafee.com/pub/antivirus/datfiles/4.x/ --limit-rate=65k --proxy=off

Erklärung der Optionen:

'-t 5' - es wird 5x versucht die Dateien zu holen
'-m' - die Verzeichnisse werden exakt kopiert (gespiegelt)
'-c' - Download nur teilweise geladener Dateien wird fortgesetzt 
'--limit-rate=65k' - Datenrate wird auf 65 kB/s begrenzt 
                     (Wir sind nicht allein in unserem Netz)
'--proxy=off' - es wird kein Proxy benutzt

Ergebnis:

+-ftp.mcafee.com
|
+--+-pub
   |
   +--+-antivirus
      |
      +--+-datfiles
         |
         +--4.x -- Dateien

lin-server:/ftp-mirror # 
wget -t 5 -m -c -nH ftp://ftp.mcafee.com/pub/antivirus/datfiles/4.x/ --limit-rate=65k --proxy=off

Ergebnis:
+-pub
|
+--+-antivirus
   |
   +--+-datfiles
      |
      +--4.x -- Dateien

lin-server:/ftp-mirror # 
wget -t 5 -m -c -nH ftp://ftp.mcafee.com/pub/antivirus/datfiles/4.x/ --limit-rate=65k --proxy=off --cut=4

Ergebnis:

lin-server:/ftp-mirror # 
wget -t 5 -m -c ftp://ftp.mcafee.com/pub/antivirus/datfiles/4.x/ --limit-rate=65k --proxy=off

lin-server:/ftp-mirror #
wget -t 5 -m -c ftp://ftp.mcafee.com/pub/datfiles/german/ --limit-rate=65k --proxy=off

lin-server:/ftp-mirror #
wget -t 5 -m -c -nH ftp://ftp.mcafee.com/pub/antivirus/datfiles/4.x/ --limit-rate=65k --proxy=off

Option „-A .zip“ - nur *.zip-Dateien werden abgerufen

lin-server:/ftp-mirror #
wget -t 5 -m -c -A .zip ftp://ftp.mcafee.com/pub/datfiles/german/ --limit-rate=65k --proxy=off

Option „-A .zip,.ini“ - nur *.zip- und *.ini-Dateien werden abgerufen

lin-server:/ftp-mirror #
wget -t 5 -m -c -A .zip,.ini ftp://ftp.mcafee.com/pub/datfiles/german/ --limit-rate=65k --proxy=off