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
- Grundschema eines Aufrufes
wget [option]... [url]...
- Varianten der „URL“ für HTTP- und FTP-Server-Abrufe
http://host[:port]/verzeichnis/datei ftp://host[:port]/verzeichnis/datei
- „URL“ für HTTP- und FTP-Server-Abrufe mit eingebundenem Username:Passwort-Paar für eine evtl. notwendige Authentifizierung (am Web- oder FTP-Server)
http://username:passwort@host[:port]/verzeichnis/datei ftp://username:passwort@host[:port]/verzeichnis/datei
- wenn bei FTP-Verbindung kein Username mitgegeben wird, wird automatisch 'anonymous' verwendet, wenn nicht angegeben wird als Passwort die eigene E-Mail-Adresse verwendet.
- <hi red>Achtung!</hi> Die hier angegebenen Daten werden unverschlüsselt, im Klartext über das Netzwerk übertragen (außer bei https-Abrufen)! (es handelt sich ja um die Protokolle http und ftp)
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.htmlProxy-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:
- im aktuellen Verzeichnis wird folgende Struktur angelegt:
+-ftp.mcafee.com | +--+-pub | +--+-antivirus | +--+-datfiles | +--4.x -- Dateien
- es werden die Dateien und Unterverzeichnisse aus dem „4.x“-Verzeichnis kopiert
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:
- im aktuellen Verzeichnis wird folgende Struktur angelegt:
+-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:
- im aktuellen Verzeichnis werden nur im Verzeichnis „4.x“ vorhandene Unterverzeichnisse angelegt
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