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
Ausgabe in eine benannte Datei schreiben statt nach stdout
Ausgabe in eine Datei schreiben, die nach der Remote-Datei benannt ist
HTTP 3xx-Weiterleitungen automatisch folgen
Eine vorherige Dateiübertragung fortsetzen/wiederaufnehmen
Die Übertragungsgeschwindigkeit auf die angegebene Rate begrenzen
Downloads größer als die angegebene Größe ablehnen
Den Content-Disposition-Header zum Benennen der Datei verwenden
Übertragungsfortschritt als einfachen Fortschrittsbalken anzeigen
Benutzername:Passwort für Server-Authentifizierung angeben
Bei vorübergehenden Fehlern die Übertragung wiederholen (Anzahl)
So viele Sekunden zwischen Wiederholungsversuchen warten
Eine lokale Datei an eine URL hochladen (standardmäßig PUT)
Lokale Verzeichnisse bei Bedarf beim Speichern der Ausgabe erstellen
Fortschrittsanzeiger und Fehlermeldungen unterdrücken
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-Lfür Weiterleitungen und-sfür lautlosen Betrieb in Skripten.
$ curl -o report.pdf https://example.com/files/report.pdfcurl -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.csvendet, erstellt curl eine Datei namensdata.csvim 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.csvcurl -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-Lgibt 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
-Lbeim Herunterladen von Dateien immer mit-ooder-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.gzcurl -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-HeaderRangeunterstü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 einenRange: 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.zipcurl --limit-rate: Download-Geschwindigkeit begrenzen
- Was es bewirkt
- Das Flag
--limit-ratesetzt eine Obergrenze für die Download- (und Upload-) Geschwindigkeit auf die angegebene Rate. Es akzeptiert Suffixe:koderKfür Kilobyte/s,moderMfür Megabyte/s,goderGfü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.isocurl --max-filesize: Abbrechen bei zu großer Datei
- Was es bewirkt
- Das Flag
--max-filesizeweist curl an, die Übertragung abzubrechen, wenn die erwartete Dateigröße (aus demContent-Length-Header) das angegebene Limit überschreitet. Die Größe kann Suffixe wiek,M,Gverwenden. - Typische Verwendung
- Verwenden Sie es in Skripten, um zu verhindern, dass unerwartet große Downloads Festplattenspeicher verbrauchen. Beachten Sie, dass nicht alle Server
Content-Lengthsenden — 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.bincurl -J: Vom Server vorgeschlagenen Dateinamen verwenden
- Was es bewirkt
- Das Flag
-J(oder--remote-header-name) weist curl an, den imContent-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
-Jimmer 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=csvcurl -#: 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.gzWeitere Download-Optionen
Benutzername:Passwort für Server-Authentifizierung angeben
Bei vorübergehenden Fehlern die Übertragung wiederholen (Anzahl)
So viele Sekunden zwischen Wiederholungsversuchen warten
Eine lokale Datei an eine URL hochladen (standardmäßig PUT)
Lokale Verzeichnisse bei Bedarf beim Speichern der Ausgabe erstellen
Fortschrittsanzeiger und Fehlermeldungen unterdrücken
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.txtVon 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.sqlMit 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/exportZuverlä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.zipHä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.