So laden Sie Dateien mit curl herunter

curl ist eines der vielseitigsten Kommandozeilen-Tools zum Herunterladen von Dateien über HTTP, HTTPS, FTP und Dutzende anderer Protokolle. Egal, ob Sie eine einzelne API-Antwort in einer Datei speichern oder Batch-Downloads in einem Shell-Skript automatisieren möchten — curl hat ein Flag dafür. Diese Anleitung behandelt alle Download-bezogenen Optionen — vom einfachen Speichern mit -o und -O über das Fortsetzen unterbrochener Übertragungen mit -C -, Bandbreitendrosselung mit --limit-rate bis zur Anzeige von Fortschrittsbalken. Jedes Flag enthält eine klare Erklärung, gängige Nutzungsmuster und ein kopierfertiges Beispiel.

Download-Flags Kurzreferenz

-o

Ausgabe in eine benannte Datei schreiben statt nach stdout

-O

Ausgabe in eine Datei schreiben, die nach der Remote-Datei benannt ist

-L

HTTP 3xx-Weiterleitungen automatisch folgen

-C -

Eine vorherige Dateiübertragung fortsetzen/wiederaufnehmen

--limit-rate

Die Übertragungsgeschwindigkeit auf die angegebene Rate begrenzen

--max-filesize

Downloads größer als die angegebene Größe ablehnen

-J

Den Content-Disposition-Header zum Benennen der Datei verwenden

-#

Übertragungsfortschritt als einfachen Fortschrittsbalken anzeigen

-u

Benutzername:Passwort für Server-Authentifizierung angeben

--retry

Bei vorübergehenden Fehlern die Übertragung wiederholen (Anzahl)

--retry-delay

So viele Sekunden zwischen Wiederholungsversuchen warten

-T

Eine lokale Datei an eine URL hochladen (standardmäßig PUT)

--create-dirs

Lokale Verzeichnisse bei Bedarf beim Speichern der Ausgabe erstellen

-s

Fortschrittsanzeiger und Fehlermeldungen unterdrücken

--output-dir

Ausgabedatei(en) im angegebenen Verzeichnis speichern (curl 7.73+)

curl -o: Mit bestimmtem Dateinamen speichern

Was es bewirkt
Das Flag -o (oder --output) weist curl an, den Antwortinhalt in einer von Ihnen angegebenen Datei zu speichern. Ohne dieses Flag gibt curl die Antwort nach stdout (Ihrem Terminal) aus. Sie können einen beliebigen Dateinamen und Pfad verwenden — curl erstellt die Datei oder überschreibt eine vorhandene.
Typische Verwendung
Verwenden Sie -o, wenn Sie den genauen Dateinamen steuern oder in einem bestimmten Verzeichnis speichern möchten. Es funktioniert mit allen Protokollen — HTTP, HTTPS, FTP, SFTP und mehr. Kombinieren Sie es mit -L für Weiterleitungen und -s für lautlosen Betrieb in Skripten.
$ curl -o report.pdf https://example.com/files/report.pdf

curl -O: Mit dem Dateinamen der Quelle speichern

Was es bewirkt
Das Flag -O (oder --remote-name) speichert die heruntergeladene Datei mit dem Dateinamen, der aus der URL extrahiert wird. Wenn die URL beispielsweise auf /data.csv endet, erstellt curl eine Datei namens data.csv im aktuellen Verzeichnis.
Typische Verwendung
Verwenden Sie -O, wenn der Remote-Dateiname sinnvoll ist und Sie ihn nicht umbenennen müssen. Sie können mehrere -O-Flags angeben, um mehrere Dateien mit einem Befehl herunterzuladen. Hinweis: Wenn die URL keinen Dateinamen enthält (z. B. mit / endet), schlägt curl fehl — verwenden Sie stattdessen -o.
$ curl -O https://example.com/files/data.csv

curl -L: Weiterleitungen folgen

Was es bewirkt
Das Flag -L (oder --location) weist curl an, HTTP-Weiterleitungen automatisch zu folgen — 301 (Moved Permanently), 302 (Found), 307 und 308. Ohne -L gibt curl die Weiterleitungsantwort selbst zurück, anstatt den eigentlichen Inhalt.
Typische Verwendung
Die meisten Download-URLs leiten mindestens einmal weiter (z. B. von HTTP zu HTTPS oder von einer Kurz-URL zur eigentlichen Datei). Kombinieren Sie -L beim Herunterladen von Dateien immer mit -o oder -O. Standardmäßig folgt curl bis zu 50 Weiterleitungen; ändern Sie dies mit --max-redirs.
$ curl -L -o latest.tar.gz https://github.com/user/repo/releases/latest/download/app.tar.gz

curl -C -: Unterbrochene Downloads fortsetzen

Was es bewirkt
Das Flag -C - (oder --continue-at -) weist curl an, die Größe der vorhandenen Teildatei automatisch zu erkennen und den Download dort fortzusetzen, wo er aufgehört hat. Der Server muss den HTTP-Header Range unterstützen, damit dies funktioniert.
Typische Verwendung
Wenn ein großer Download durch ein Netzwerkproblem oder einen Timeout unterbrochen wurde, führen Sie einfach denselben Befehl erneut mit dem hinzugefügten -C - aus. curl sendet einen Range: bytes=OFFSET--Header und lädt nur die verbleibenden Daten herunter. Dies ist wesentlich für große Dateien über unzuverlässige Verbindungen.
$ curl -C - -o largefile.zip https://cdn.example.com/largefile.zip

curl --limit-rate: Download-Geschwindigkeit begrenzen

Was es bewirkt
Das Flag --limit-rate setzt eine Obergrenze für die Download- (und Upload-) Geschwindigkeit auf die angegebene Rate. Es akzeptiert Suffixe: k oder K für Kilobyte/s, m oder M für Megabyte/s, g oder G für Gigabyte/s.
Typische Verwendung
Verwenden Sie --limit-rate, um Ihre Bandbreite beim Herunterladen großer Dateien nicht zu überlasten, besonders bei gemeinsam genutzten Verbindungen. Es ist auch nützlich, um zu testen, wie Ihre Anwendung mit langsamen Antworten umgeht.
$ curl --limit-rate 1M -o bigfile.iso https://mirror.example.com/bigfile.iso

curl --max-filesize: Abbrechen bei zu großer Datei

Was es bewirkt
Das Flag --max-filesize weist curl an, die Übertragung abzubrechen, wenn die erwartete Dateigröße (aus dem Content-Length-Header) das angegebene Limit überschreitet. Die Größe kann Suffixe wie k, M, G verwenden.
Typische Verwendung
Verwenden Sie es in Skripten, um zu verhindern, dass unerwartet große Downloads Festplattenspeicher verbrauchen. Beachten Sie, dass nicht alle Server Content-Length senden — in diesem Fall kann curl dieses Limit nicht durchsetzen, und der Download wird normal fortgesetzt.
$ curl --max-filesize 100M -o update.bin https://example.com/update.bin

curl -J: Vom Server vorgeschlagenen Dateinamen verwenden

Was es bewirkt
Das Flag -J (oder --remote-header-name) weist curl an, den im Content-Disposition-Header des Servers angegebenen Dateinamen zu verwenden, anstatt ihn aus der URL abzuleiten. Dies ist üblich bei Download-APIs, die Dateien mit aussagekräftigen Namen zurückgeben.
Typische Verwendung
Kombinieren Sie -J immer mit -O. Dies ist nützlich, wenn die URL ein API-Endpunkt ist (wie /export?format=csv), der Server aber einen korrekten Dateinamen in den Headern zurückgibt. Sicherheitshinweis: Der Server steuert den Dateinamen — verwenden Sie dies nur mit vertrauenswürdigen Servern.
$ curl -L -O -J https://example.com/api/export?format=csv

curl -#: Einen Fortschrittsbalken anzeigen

Was es bewirkt
Das Flag -# (oder --progress-bar) ersetzt den detaillierten Standard-Fortschrittsanzeiger durch einen einfachen ###-Fortschrittsbalken. Er ist bei interaktiver Nutzung leichter zu lesen.
Typische Verwendung
Verwenden Sie -# beim interaktiven Herunterladen, wenn Sie einen übersichtlichen Fortschrittsindikator wünschen. Für Skripte ist -s (lautlos) oder der Standard-Fortschrittsanzeiger vorzuziehen. Die Standard-curl-Ausgabe zeigt bereits Geschwindigkeit, Prozentsatz, verbleibende Zeit und Gesamtgröße an.
$ curl -# -o archive.tar.gz https://example.com/archive.tar.gz

Weitere Download-Optionen

-u

Benutzername:Passwort für Server-Authentifizierung angeben

--retry

Bei vorübergehenden Fehlern die Übertragung wiederholen (Anzahl)

--retry-delay

So viele Sekunden zwischen Wiederholungsversuchen warten

-T

Eine lokale Datei an eine URL hochladen (standardmäßig PUT)

--create-dirs

Lokale Verzeichnisse bei Bedarf beim Speichern der Ausgabe erstellen

-s

Fortschrittsanzeiger und Fehlermeldungen unterdrücken

--output-dir

Ausgabedatei(en) im angegebenen Verzeichnis speichern (curl 7.73+)

Praxisszenarien für Downloads

Diese Beispiele kombinieren mehrere Flags, um gängige Download-Aufgaben zu bewältigen, die Ihnen in der täglichen Entwicklung und beim Scripting begegnen.

Mehrere Dateien auf einmal herunterladen

Verwenden Sie mehrere -O-Flags, um mehrere Dateien mit einem Befehl herunterzuladen. curl verarbeitet sie sequenziell. Für parallele Downloads verwenden Sie xargs oder GNU parallel.

$ curl -O https://example.com/file1.txt -O https://example.com/file2.txt -O https://example.com/file3.txt

Von einem FTP-Server herunterladen

curl unterstützt FTP, FTPS und SFTP nativ. Fügen Sie -u user:password für authentifizierten Zugang hinzu. Verwenden Sie -O, um den Remote-Dateinamen beizubehalten.

$ curl -u user:pass -o backup.sql ftp://ftp.example.com/db/backup.sql

Mit Authentifizierung herunterladen

Verwenden Sie -u user:pass für Basic Auth oder -H, um ein Bearer-Token oder einen API-Schlüssel zu senden. Kombinieren Sie mit -L und -o für einen vollständigen Download.

$ curl -H "Authorization: Bearer eyJhbGciOi..." -L -o data.json https://api.example.com/export

Zuverlässiger Download mit Fortsetzung und Wiederholung

Kombinieren Sie -C - (fortsetzen), --retry (automatische Wiederholung bei Fehlern) und -L (Weiterleitungen folgen) für robuste Downloads, die Netzwerkunterbrechungen überstehen.

$ curl -C - --retry 5 --retry-delay 10 -L -o largefile.zip https://cdn.example.com/largefile.zip

Häufig gestellte Fragen zum Herunterladen mit curl

Was ist der Unterschied zwischen curl -o und curl -O?

-o Dateiname speichert den Download mit dem genauen Dateinamen, den Sie angeben. -O extrahiert den Dateinamen aus der URL und verwendet ihn. Verwenden Sie -o, wenn Sie einen benutzerdefinierten Namen oder Pfad wünschen; verwenden Sie -O, wenn der Remote-Dateiname passt.

Warum lädt curl eine leere oder HTML-Datei anstelle der eigentlichen Datei herunter?

Die URL gibt wahrscheinlich eine HTTP-Weiterleitung (301 oder 302) zurück. Standardmäßig speichert curl die Weiterleitungsantwort selbst — nicht den endgültigen Inhalt. Fügen Sie -L hinzu, um Weiterleitungen automatisch zu folgen: curl -L -o Datei URL.

Wie setze ich eine teilweise heruntergeladene Datei mit curl fort?

Verwenden Sie curl -C - -o Dateiname URL. Das Flag -C - erkennt die vorhandene Dateigröße und sendet einen Range-Header, um nur die verbleibenden Bytes anzufordern. Der Server muss Range-Anfragen unterstützen, damit dies funktioniert.

Wie begrenze ich die Download-Geschwindigkeit in curl?

Verwenden Sie --limit-rate mit einem Wert und Suffix: curl --limit-rate 500k -o Datei URL begrenzt die Geschwindigkeit auf 500 KB/s. Suffixe: k (KB/s), M (MB/s), G (GB/s).

Kann curl mehrere Dateien gleichzeitig herunterladen?

Ja. Verwenden Sie mehrere -O-Flags: curl -O URL1 -O URL2 -O URL3. curl lädt sie sequenziell herunter. Für parallele Downloads leiten Sie eine URL-Liste an xargs -P 4 -I {} curl -O {} weiter.

Wie lade ich eine Datei herunter, die eine Authentifizierung erfordert?

Für HTTP Basic Auth: curl -u user:pass -o Datei URL. Für Bearer-Tokens: curl -H "Authorization: Bearer TOKEN" -o Datei URL. Für API-Schlüssel in Headern: curl -H "X-API-Key: KEY" -o Datei URL.

Wie lade ich Dateien von einem FTP-Server mit curl herunter?

Verwenden Sie curl -u user:pass -o lokale_datei ftp://host/pfad/datei. curl unterstützt FTP, FTPS (FTP über TLS) und SFTP (SSH FTP) nativ. Für anonymes FTP lassen Sie -u weg.

Wie lade ich große Dateien zuverlässig mit curl herunter?

Kombinieren Sie -C - (bei Fehler fortsetzen), --retry 5 (automatische Wiederholung), --retry-delay 10 und -L (Weiterleitungen folgen): curl -C - --retry 5 --retry-delay 10 -L -o Datei URL. Dies bewältigt Netzwerkprobleme automatisch.

Wie zeige ich einen Fortschrittsbalken beim Herunterladen mit curl an?

Verwenden Sie curl -# -o Datei URL für einen einfachen Fortschrittsbalken. Die Standard-curl-Ausgabe zeigt bereits Übertragungsgeschwindigkeit, Prozentsatz und geschätzte Zeit an. Für Skripte verwenden Sie -s, um alle Ausgaben zu unterdrücken.

Kann ich ein Download-Verzeichnis in curl angeben?

Ab curl 7.73+ verwenden Sie --output-dir /pfad/zum/verzeichnis kombiniert mit -O. Für ältere Versionen geben Sie den vollständigen Pfad mit -o /pfad/zum/verzeichnis/dateiname an. Fügen Sie --create-dirs hinzu, wenn das Verzeichnis noch nicht existiert.

Sollte ich curl oder wget zum Herunterladen von Dateien verwenden?

Beide sind hervorragend. wget ist einfacher für rekursives Website-Spiegeln und hat eingebaute Wiederholungslogik. curl unterstützt über 25 Protokolle (nicht nur HTTP/FTP), eignet sich besser für API-Aufrufe und Scripting, unterstützt mehr Authentifizierungsmethoden und ist auf praktisch allen Betriebssystemen verfügbar.

Wie verwende ich curl in einem Bash-Skript zum Herunterladen von Dateien?

Verwenden Sie curl -fsSL -o Datei URL: -f schlägt lautlos bei HTTP-Fehlern fehl (keine Fehlerseite gespeichert), -s lautlos, -S Fehler auch im lautlosen Modus anzeigen, -L Weiterleitungen folgen. Prüfen Sie den Exit-Code: if ! curl -fsSL -o Datei URL; then echo "Download fehlgeschlagen"; exit 1; fi.