wget und curl laden Dateien von URLs herunter - unverzichtbar für die Server-Administration. Beide haben ihre Stärken.

wget - Der Download-Spezialist

wget ist für Downloads optimiert und kann ganze Websites spiegeln.

Einfacher Download

wget https://example.com/datei.zip

Mit anderem Dateinamen speichern

wget -O mein-name.zip https://example.com/datei.zip

In bestimmtes Verzeichnis

wget -P /tmp/ https://example.com/datei.zip

Download fortsetzen

Bei Abbruch:

wget -c https://example.com/große-datei.zip

Im Hintergrund

wget -b https://example.com/datei.zip
# Log in wget-log
tail -f wget-log

Mehrere Dateien

Aus einer Datei mit URLs:

wget -i urls.txt

Geschwindigkeit begrenzen

wget --limit-rate=500k https://example.com/datei.zip

Stille Ausgabe

wget -q https://example.com/datei.zip

Mit Authentifizierung

wget --user=admin --password=geheim https://example.com/datei.zip

Website spiegeln

wget --mirror --convert-links --page-requisites https://example.com/

curl - Der Allrounder

curl ist vielseitiger und unterstützt mehr Protokolle.

Einfacher Download

curl -O https://example.com/datei.zip

Wichtig: -O (großes O) ist nötig, sonst wird auf stdout ausgegeben.

Mit anderem Namen

curl -o mein-name.zip https://example.com/datei.zip

Inhalt direkt ausgeben

curl https://example.com/info.txt

Download fortsetzen

curl -C - -O https://example.com/datei.zip

Stille Ausgabe

curl -s https://example.com/datei.zip -o datei.zip

Mit Fortschrittsbalken

curl -# -O https://example.com/datei.zip

Redirects folgen

curl -L -O https://example.com/download

Mit Authentifizierung

curl -u admin:geheim https://example.com/datei.zip -O

Header anzeigen

curl -I https://example.com/

Custom Header senden

curl -H "Authorization: Bearer TOKEN" https://api.example.com/data

curl für APIs

curl glänzt bei API-Anfragen:

GET-Request

curl https://api.example.com/users

POST-Request

curl -X POST -d "name=Max&email=max@example.com" https://api.example.com/users

JSON senden

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"name":"Max","email":"max@example.com"}' \
  https://api.example.com/users

Response formatiert (mit jq)

curl -s https://api.example.com/users | jq .

wget vs. curl Vergleich

| Feature | wget | curl | |---------|------|------| | Rekursiver Download | Ja | Nein | | Website spiegeln | Ja | Nein | | API-Anfragen | Eingeschränkt | Exzellent | | Protokolle | HTTP(S), FTP | HTTP(S), FTP, SFTP, SCP, + viele mehr | | Im Hintergrund | -b | Nein (mit &) | | Download fortsetzen | -c | -C - | | Standardmäßig installiert | Meist | Meist |

Praktische Beispiele

Software installieren

# wget
wget https://example.com/software.tar.gz
tar -xzf software.tar.gz

# curl
curl -LO https://example.com/software.tar.gz
tar -xzf software.tar.gz

Skript direkt ausführen

Vorsicht: Nur von vertrauenswürdigen Quellen!

# bash
curl -sSL https://example.com/install.sh | bash

# oder mit wget
wget -qO- https://example.com/install.sh | bash

Eigene IP ermitteln

curl ifconfig.me
# oder
wget -qO- ifconfig.me

Docker installieren

curl -fsSL https://get.docker.com | bash

SSL-Zertifikat prüfen

curl -vI https://example.com 2>&1 | grep -A5 "Server certificate"

Download mit Proxy

# wget
wget -e http_proxy=proxy.example.com:8080 https://example.com/datei.zip

# curl
curl -x proxy.example.com:8080 -O https://example.com/datei.zip

Große Datei mit Fortschritt

wget --progress=bar:force https://example.com/groß.iso

curl --progress-bar -O https://example.com/groß.iso

Fehlerbehebung

SSL-Fehler umgehen (nur zum Testen!)

wget --no-check-certificate https://...
curl -k https://...

Timeout setzen

wget --timeout=30 https://...
curl --connect-timeout 30 https://...

User-Agent setzen

wget --user-agent="Mozilla/5.0" https://...
curl -A "Mozilla/5.0" https://...

Fazit

wget für Downloads, besonders rekursive. curl für APIs und vielseitige Anfragen. Beide gehören zur Grundausstattung jedes Linux-Administrators.