~~NOCACHE~~
~~META:
date issued = 2018-08-18
~~
{{tag>linux hilfsprogramm ftp web http https download wget grabber syntax befehle heiko_teichmeier glauchau sachsen}}
===== wget (1) - Die Antwort auf (fast) alle HTTP-, HTTPS- und FTP-Download-Fragen =====
__letzte inhaltliche Überarbeitung:__ 18.08.2018
===== 1. Einführung =====
[[http://www.gnu.org/software/wget/wget.html|(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.\\
* Achtung! 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.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:__
* 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