Dateien mit cURL herunterladen und Downloads fortsetzen
Um eine Datei mit cURL herunterzuladen, geben Sie eine URL und mit
-o einen Ausgabedateinamen an. Die folgende Anleitung speichert ein
Quellcodearchiv des curl-Projekts, folgt Weiterleitungen und zeigt, wie Sie den Download fortsetzen,
wenn er zwischendurch abbricht.
Prüfen Sie cURL in Ihrem Terminal
Öffnen Sie ein Terminal in einem Verzeichnis, in dem Sie Dateien speichern können. Diese Beispiele verwenden Befehle in Bash-Syntax und wurden unter macOS mit cURL 8.7.1 und 8.22.0 getestet. Prüfen Sie zuerst Ihre installierte Version:
curl --version
Die erste Zeile sollte mit curl und einer Versionsnummer beginnen. Falls der
Befehl fehlt, finden Sie auf der Downloadseite von curl eine
Installationsmöglichkeit für Ihre Plattform.
In eine lokale Datei herunterladen
Hier laden Sie das Quellcodearchiv von curl 8.22.0 als Beispieldatei herunter. Sie müssen es weder kompilieren noch installieren. Der Befehl überschreibt eine vorhandene Datei mit demselben Namen. Wählen Sie daher einen anderen Ausgabenamen, wenn Sie diese Datei behalten möchten.
curl -fsSLo curl-8.22.0.tar.xz 'https://curl.se/download/curl-8.22.0.tar.xz'
Die Kurzoptionen sind zu -fsSLo zusammengefasst:
| Option | Funktion |
|---|---|
-f (--fail) | Meldet HTTP-Fehler wie 404 als fehlgeschlagene Übertragung. |
-s (--silent) | Blendet die Fortschrittsanzeige aus. |
-S (--show-error) | Zeigt Fehlermeldungen auch bei Verwendung von -s an. |
-L (--location) | Folgt HTTP-Weiterleitungen. |
-o (--output) | Speichert die Antwort unter dem darauffolgenden Dateinamen. |
Diese Optionen sind im curl-Handbuch dokumentiert.
Ohne Ausgabeoption schreibt cURL in die Standardausgabe, normalerweise Ihr Terminal.
Mit -o schreibt es in eine Datei
im aktuellen Verzeichnis, sofern Sie keinen anderen Pfad angeben.
Die Option -L ist wichtig, wenn ein Downloadlink an einen anderen Ort
weiterleitet: cURL ruft das Ziel ab und speichert dessen Antwort unter dem gewählten Dateinamen.
Behalten Sie die Option sowohl beim ersten Download als auch im folgenden Befehl zum Fortsetzen bei.
Bei Erfolg bleibt dieser Befehl ohne Ausgabe und kehrt zur Eingabeaufforderung zurück. Prüfen Sie die gespeicherte Dateigröße:
wc -c < curl-8.22.0.tar.xz
Bei diesem Archiv beträgt die Größe 2953092 Bytes. Damit prüfen Sie die Größe,
nicht den Inhalt. Verwenden Sie die Prüfsumme des Herausgebers, wenn Sie die heruntergeladenen Bytes
verifizieren müssen. Um Ihre eigene Datei herunterzuladen, ersetzen Sie sowohl die URL als auch den
Ausgabedateinamen. Behalten Sie die Anführungszeichen um die URL bei, damit Shell-Zeichen wie
& den Befehl nicht aufteilen.
Erkennen Sie einen fehlgeschlagenen Download
Mit -f beendet sich cURL bei einer Antwort wie HTTP 404 oder 500 mit dem
Code 22 und einer Fehlermeldung, ohne die Fehlerseite des Servers als
Download zu speichern. Ohne -f kann eine HTTP-Fehlerantwort wie eine
erfolgreiche Übertragung aussehen. Weitere Informationen finden Sie im Handbuch zum
Verhalten von --fail.
Ein Netzwerkausfall kann dennoch eine unvollständige Datei auf dem Datenträger hinterlassen. Allein
das Vorhandensein einer Datei beweist nicht, dass die Übertragung abgeschlossen ist. Wenn die URL
eine Anmeldeseite mit HTTP 200 zurückgibt, erkennt -f auch das nicht:
cURL kann nicht feststellen, ob diese Bytes die Datei sind, die Sie herunterladen wollten.
Setzen Sie einen unterbrochenen Download fort
Wenn ein Download abbricht, behalten Sie die unvollständige Datei. Um dies selbst auszuprobieren,
starten Sie einen neuen Download mit begrenzter Geschwindigkeit und drücken Sie nach einigen
Sekunden Ctrl+C. Dabei wird das gerade heruntergeladene Archiv absichtlich überschrieben. Die
Fortschrittsanzeige ist hier sichtbar, da der Befehl -s auslässt.
curl -fSL --limit-rate 50K -o curl-8.22.0.tar.xz 'https://curl.se/download/curl-8.22.0.tar.xz'
Setzen Sie den Download im selben Verzeichnis mit demselben Ausgabedateinamen und derselben URL fort:
curl -fsSL -C - -o curl-8.22.0.tar.xz 'https://curl.se/download/curl-8.22.0.tar.xz'
Das Zeichen - nach -C weist cURL an, die Größe
der lokalen Datei als Startposition in Bytes zu verwenden. Bei HTTP muss der Server die
Bereichsanfrage berücksichtigen, damit cURL die verbleibenden Bytes anhängen kann. Der
curl-Leitfaden zum Fortsetzen von Downloads
erläutert, wie die Startposition gewählt wird. Wiederholen Sie nach erfolgreicher Ausführung des
Befehls die Größenprüfung von oben.
Wenn der Server die Bereichsanfrage ignoriert, meldet cURL den Fehler
33, statt den Download fortzusetzen. Starten Sie mit dem ursprünglichen
Downloadbefehl ohne -C - neu, um die unvollständige Datei durch einen
vollständigen Download zu ersetzen.
Setzen Sie nur den Download einer Datei fort, deren Inhalt auf dem Server unverändert ist. cURL verwendet die Länge Ihrer unvollständigen Datei. Es vergleicht die bereits gespeicherten Bytes nicht mit der Kopie auf dem Server. Eine geänderte Datei auf dem Server kann daher eine Mischung aus alten und neuen Inhalten ergeben, selbst wenn die Übertragung erfolgreich ist. Mit einer versionierten Download-URL wie beim hier verwendeten Archiv sind Sie nicht auf eine wechselnde „latest“-URL angewiesen. Wenn Sie unsicher sind, ob sich die Datei geändert hat, beginnen Sie von vorn.
Wie Sie Dateien hochladen, um ein Transloadit-Template auszuführen, erfahren Sie im API-Leitfaden zum Erstellen einer Assembly.
