Das Herunterladen von Inhalten von entfernten Servern ist eine Routineaufgabe für Administratoren und Entwickler. Obwohl es zahlreiche Tools für diese Aufgabe gibt, zeichnet sich cURL durch seine Vielseitigkeit und Einfachheit aus. Es handelt sich um ein Befehlszeilenprogramm, das Protokolle wie HTTP, HTTPS, FTP und SFTP unterstützt und daher für Automatisierung, Skripting und effiziente Dateiübertragungen unverzichtbar ist.
Sie können cURL direkt auf Ihrem Computer ausführen, um Dateien abzurufen. Sie können es auch in Skripte einbinden, um die Datenverarbeitung zu optimieren und so manuellen Aufwand und Fehler zu minimieren. Diese Anleitung zeigt verschiedene Methoden zum Herunterladen von Dateien mit cURL. Anhand dieser Beispiele lernen Sie, wie Sie mit Weiterleitungen umgehen, Dateien umbenennen und den Downloadfortschritt überwachen. Am Ende sollten Sie cURL sicher für Aufgaben auf Servern oder in Cloud-Umgebungen einsetzen können.
Der curl-Befehl arbeitet mit mehreren Protokollen, wird jedoch hauptsächlich mit HTTP und HTTPS verwendet, um eine Verbindung zu Webservern herzustellen. Bei Bedarf kann er auch mit FTP- oder SFTP-Servern interagieren.
Standardmäßig ruft cURL eine Ressource von einer angegebenen URL ab und zeigt sie im Terminal (Standardausgabe) an. Dies ist oft nützlich, um Dateiinhalte anzuzeigen, ohne sie zu speichern, insbesondere bei kleinen Textdateien.
Beispiel: Um den Inhalt einer Textdatei unter https://example.com/file.txt anzuzeigen, führen Sie aus:
curl https://example.com/file.txt
Für kurze Textdokumente ist dieser Ansatz ausreichend. Bei großen oder binären Dateien kann der Bildschirm jedoch mit unlesbaren Daten überflutet werden, daher möchten Sie sie in der Regel speichern.
Häufig besteht das Hauptziel darin, die heruntergeladene Datei auf dem lokalen Computer zu speichern, anstatt sie im Terminal zu sehen. cURL vereinfacht dies mit der Option -O (großes O), die den ursprünglichen Dateinamen der Remote-Datei beibehält.
curl -O https://example.com/file.txt
Dies ruft file.txt ab und speichert sie im aktuellen Verzeichnis unter demselben Namen. Diese Methode ist schnell und bewahrt den vorhandenen Dateinamen, was hilfreich sein kann, wenn der Dateiname eine Bedeutung hat.
Manchmal ist es wichtig, die heruntergeladene Datei umzubenennen, um Kollisionen zu vermeiden oder ein klares Benennungsschema zu erstellen. Verwenden Sie in diesem Fall die Option -o (kleines o):
curl -o myfile.txt https://example.com/file.txt
Hier lädt cURL die Remote-Datei file.txt herunter, speichert sie jedoch lokal als meine_datei.txt. Dies hilft, Dateien organisiert zu halten oder versehentliches Überschreiben zu vermeiden. Besonders wertvoll ist dies in Skripten, die beschreibende Dateinamen benötigen.
Wenn eine Datei angefordert wird, kann der Server Ihrem Client mitteilen, dass er zu einer anderen URL wechseln soll. Das Verstehen und Handhaben von Weiterleitungen ist entscheidend für erfolgreiche Downloads.
Weiterleitungen werden häufig bei umstrukturierten Websites, verschobenen Dateien oder Spiegelservern verwendet. Ohne Weiterleitungsunterstützung stoppt cURL nach der ersten „verschoben“-Antwort, und Sie erhalten die Datei nicht.
Um cURL anzuweisen, einer Weiterleitungskette bis zum endgültigen Ziel zu folgen, verwenden Sie -L (oder --location):
curl -L -O https://example.com/redirected-file.jpg
So kann cURL die richtige Datei abrufen, selbst wenn die ursprüngliche URL auf eine andere Adresse verweist. Wenn Sie -L weglassen, zeigt cURL lediglich die Weiterleitungsnachricht an und beendet den Vorgang, was bei Websites mit mehreren Weiterleitungen problematisch ist.
cURL kann auch mehrere Datei-Downloads gleichzeitig verarbeiten, sodass Sie den Befehl nicht wiederholt ausführen müssen.
Wenn Dateinamen einem Muster folgen, können geschweifte Klammern {} verwendet werden, um sie kurz anzugeben:
curl -O https://example.com/files/{file1.jpg,file2.jpg,file3.jpg}
cURL ruft jede Datei der Reihe nach ab, was besonders in automatisierten Workflows nützlich ist.
Für eine Reihe von nummerierten oder alphabetisch benannten Dateien können Sie einen Bereich in eckigen Klammern angeben:
curl -O https://example.com/files/file[1-5].jpg
cURL iteriert automatisch durch die Dateien file1.jpg bis file5.jpg. Dies ist ideal für gleichmäßig benannte Dateiserien.
Wenn Sie unterschiedliche URLs für jede Datei haben, können Sie sie miteinander verketten:
curl -O https://example1.com/file1.jpg -O https://example2.com/file2.jpg
Dieser Ansatz lädt file1.jpg von der ersten Website und file2.jpg von der zweiten herunter, ohne mehrere Befehle ausführen zu müssen.
In bestimmten Situationen möchten Sie möglicherweise die Downloadgeschwindigkeit steuern oder verhindern, dass cURL zu lange auf einen nicht reagierenden Server wartet.
Um zu verhindern, dass Ihr Netzwerk überlastet wird oder um langsame Bedingungen zu simulieren, können Sie die Downloadrate mit --limit-rate begrenzen:
curl --limit-rate 2M -O https://example.com/bigfile.zip
2M steht für 2 Megabyte pro Sekunde. Sie können auch K für Kilobyte oder G für Gigabyte verwenden.
Wenn ein Server zu langsam ist, möchten Sie möglicherweise, dass cURL nach einer bestimmten Zeit stoppt. Der Parameter --max-time erledigt genau das:
curl --max-time 60 -O https://example.com/file.iso
Hier beendet cURL den Vorgang nach 60 Sekunden, was bei Skripten nützlich ist, die schnelle Fehlererkennung benötigen.
cURL kann seine Ausgabe anpassen, um minimale oder ausführliche Informationen anzuzeigen.
Für Batch-Aufgaben oder Cronjobs, bei denen Sie keine Fortschrittsanzeigen benötigen, verwenden Sie -s (oder --silent):
curl -s -O https://example.com/file.jpg
Dies blendet Fortschritt und Fehler aus, was für sauberere Protokolle sorgt. Die Fehlersuche wird jedoch schwieriger, wenn ein Fehler im Stillen auftritt.
Im Gegensatz dazu gibt -v (oder --verbose) detaillierte Anfragen- und Antwortinformationen aus:
curl -v https://example.com
Die ausführliche Ausgabe ist unschätzbar, wenn Sie Probleme wie ungültige SSL-Zertifikate oder falsche Weiterleitungen debuggen.
Einige Downloads erfordern Anmeldedaten oder eine sichere Verbindung.
Wenn ein Server einen Benutzernamen und ein Passwort benötigt, verwenden Sie -u:
curl -u username:password -O https://example.com/protected/file.jpg
Das direkte Einbetten von Anmeldedaten kann riskant sein, da sie in Protokollen oder Prozesslisten erscheinen könnten. Verwenden Sie nach Möglichkeit Umgebungsvariablen oder .netrc-Dateien für eine sicherere Handhabung.
Standardmäßig überprüft cURL SSL-Zertifikate. Wenn das Zertifikat ungültig ist, blockiert cURL die Übertragung. Sie können diese Prüfung mit -k oder --insecure umgehen, was jedoch Sicherheitsrisiken birgt. Verwenden Sie nach Möglichkeit eine vertrauenswürdige Zertifizierungsstelle, damit Verbindungen authentifiziert bleiben.
In einigen Umgebungen muss der Datenverkehr über einen Proxyserver geleitet werden, bevor er das Ziel erreicht.
Verwenden Sie die Option -x oder --proxy, um den Proxy anzugeben:
curl -x http://proxy_host:proxy_port -O https://example.com/file.jpg
Ersetzen Sie proxy_host und proxy_port durch die entsprechenden Angaben. cURL leitet die Anfrage an den Proxy weiter, der dann die Datei in Ihrem Namen abruft.
Wenn Ihr Proxy Anmeldedaten erfordert, können Sie diese in die URL einbetten:
curl -x https://proxy.example.com:8080 -U myuser:mypassword -O https://example.com/file.jpg
Auch hier gilt: Das Speichern sensibler Daten im Klartext ist gefährlich. Verwenden Sie stattdessen Umgebungsvariablen oder Konfigurationsdateien.
Die Verfolgung des Downloadfortschritts ist bei großen Dateien oder langsamen Verbindungen wichtig.
Standardmäßig zeigt cURL eine Fortschrittsanzeige an, die die Gesamtgröße, Übertragungsgeschwindigkeit und geschätzte Fertigstellungszeit enthält. Zum Beispiel:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1256 100 1256 0 0 2243 0 --:--:-- --:--:-- --:--:-- 2246
Diese Anzeige hilft Ihnen, abzuschätzen, wie viel noch verbleibt und ob die Übertragungsrate akzeptabel ist.
Wenn Sie weniger Details wünschen, fügen Sie -# hinzu:
curl -# -O https://example.com/largefile.iso
Eine einfachere Leiste zeigt den Gesamtfortschritt in Prozent an. Sie ist übersichtlicher, bietet aber keine tieferen Statistiken wie die aktuelle Geschwindigkeit.
Wenn Sie cURL in Skripten verwenden, möchten Sie möglicherweise Fortschrittsdaten aufzeichnen. cURL sendet Fortschrittsinformationen normalerweise an stderr, daher können Sie sie umleiten:
curl -# -O https://example.com/largefile.iso 2>progress.log
Hier enthält progress.log die Statusaktualisierungen, die Sie analysieren oder später speichern können.
cURL überzeugt als flexibles Befehlszeilen-Tool zum Herunterladen von Dateien über verschiedene Protokolle und Umgebungen. Egal, ob Sie komplexe Weiterleitungen handhaben, Dateien im Handumdrehen umbenennen oder die Bandbreite begrenzen müssen – cURL bietet die passenden Optionen. Wenn Sie die wichtigsten Parameter und Modi beherrschen, können Sie cURL nahtlos in Ihre tägliche Arbeit für Skripting, Automatisierung und effiziente Dateiübertragungen integrieren.