Verwenden von cURL zum Herunterladen von Remote-Dateien über die Befehlszeile

Inhaltsverzeichnis:

Anonim

Das leistungsstarke Befehlszeilentool curl kann verwendet werden, um Dateien von nahezu jedem Remote-Server herunterzuladen. Langjährige Befehlszeilenbenutzer wissen, dass dies für eine Vielzahl von Situationen nützlich sein kann, aber um die Dinge einfach zu h alten, werden viele feststellen, dass das Herunterladen einer Datei mit curl oft eine schnellere Alternative zur Verwendung eines Webbrowsers oder FTP-Clients von der GUI-Seite aus sein kann Mac OS X (oder Linux).Dies ist hilfreich für lokale Situationen, aber es ist besonders wertvoll, wenn Sie in einer Situation sind, in der Sie etwas auf einen Remote-Mac herunterladen müssen, wenn Sie über SSH verbunden sind.

Für die Zwecke dieser exemplarischen Vorgehensweise konzentrieren wir uns hauptsächlich auf das Herunterladen von Dateien von den beiden häufig anzutreffenden HTTP- und SFTP-Protokollen, obwohl beachtet werden sollte, dass cURL viel mehr Protokolle unterstützt. Obwohl Curl einfach zu verwenden ist, wird empfohlen, sich mit der Befehlszeile vertraut zu machen.

Exakte Übereinstimmungsdateien mit curl -O herunterladen

Die Verwendung des Flags -O in Großbuchstaben mit curl lädt die Datei vom Remote-Server herunter, während der genaue Dateiname beibeh alten wird. Die grundlegende Syntax dafür lautet wie folgt:

locke -O

Das bedeutet, wenn die angegebene URL-Datei „sample.zip“ heißt, wird sie mit dem Dateinamen „sample.zip“ heruntergeladen, und wenn die Datei etwas Riesiges und Kompliziertes wie „LongExampleFileNameForOSXDaily-v-“ heißt. 1-3-51-Revision-515b12-readme.txt“ auf dem Remote-Server, wird es mit genau diesem Namen auf dem lokalen Computer gespeichert. Längere Dateinamen werden oft besser mit dem Flag -o gehandhabt als mit -O, worauf wir gleich eingehen werden.

Normale Leser werden sich vielleicht daran erinnern, dass wir den Befehl curl -O verwendet haben, um zu erklären, wie man den eigentlichen Audioinh alt aus einer m3u-Streaming-Datei extrahiert.

Wenn Sie einen Download mit curl beginnen, werden der übertragene Prozentsatz, die mit dem Herunterladen verbrachte und verbleibende Zeit sowie die Übertragungsgeschwindigkeit angezeigt.

Der Screenshot bietet eine bessere Darstellung als das eingefügte Beispiel unten, sieht aber ungefähr so ​​aus:

% Gesamt % Empfangen % Xferd Durchschnittliche Geschwindigkeit Zeit Zeit Zeit Aktueller Dload Upload Gesamtausgaben Verbleibende Geschwindigkeit 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k

Wenn die Übertragungsgeschwindigkeit angezeigt wird, könnten Sie die Ausgabe von curl nach /dev/null umleiten und damit die Geschwindigkeit der Internetverbindung testen, aber der wget-Befehl hat eine einfacher zu lesende und zu befolgende Übertragungsleiste, daher ist wget besser für diese Aufgabe geeignet.

Speichern einer Remote-Datei unter einem anderen Namen mit curl -o

Die Verwendung eines Kleinbuchstaben-O-Flags ermöglicht es Ihnen, einen anderen Dateinamen für die heruntergeladene Datei anzugeben, als sie auf dem Remote-Server benannt ist. Dies kann hilfreich sein, um lange Dateinamen zu reduzieren oder einfach etwas zu kennzeichnen, damit es einfacher ist, es selbst zu finden. Die allgemeine Syntax wäre:

curl -o

Wenn Sie beispielsweise eine iOS IPSW-Datei speichern möchten, die Sie auf Apple-Servern gefunden haben, ohne den langen vollständigen Namen zu haben, können Sie Folgendes verwenden:

curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw

Dadurch wird die Datei „iPhone5, 3_7.0.4_11B554a_Restore.ipsw“ heruntergeladen, aber kürzer benannt als die aussagekräftigere „iPhone5C-704.ipsw“.

Wenn Sie die Datei lieber nicht im aktuellen Arbeitsverzeichnis speichern möchten, geben Sie einen Pfad wie folgt als Teil des Dateinamens an:

curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg

Mehrere Dateien gleichzeitig mit curl herunterladen

cURL kann problemlos mehrere Dateien gleichzeitig herunterladen, Sie müssen lediglich mehr als eine URL wie folgt angeben:

locke -O

Für Dateien mit unterschiedlichen Namen oder die auf unterschiedlichen Servern oder in unterschiedlichen Verzeichnispfaden gehostet werden, verwenden Sie die vollständige URL, zum Beispiel:

curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt

Wenn andererseits die herunterzuladenden Dateinamen inkrementelle Benennung verwenden, können Sie Klammern verwenden, um einen Download-Bereich anzugeben, wie folgt:

curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt

Dies würde die Dateien fdl-1.1.txt, fd1-1.2.txt und fd1-1.3.txt alle gleichzeitig erfassen, ohne jede einzelne URL angeben zu müssen. Das funktioniert natürlich nur, wenn die Dateien zusammen im gleichen Verzeichnis und auf der gleichen Domain liegen.

Authentifizierung mit Curl

Sie können die Authentifizierung auch mit cURL übergeben, indem Sie das Flag -u verwenden:

curl -u user:pass -O ftp://remote_url/file-to-download.zip

Denken Sie daran, dass der Bash-Verlauf das Passwort im Klartext speichert, wenn Sie -u mit einem angegebenen Benutzernamen und Passwort verwenden, daher wird dies für die meisten Situationen nicht empfohlen. Sie können das umgehen, indem Sie ein Leerzeichen vor „curl“ setzen.Wenn Sie dem Befehl nicht die Leertaste voranstellen, sollten Sie den Befehlsverlauf zur Sicherheit danach wahrscheinlich leeren.

Unterstützte Curl-Protokolle und Verwendung über HTTP und FTP hinaus

Wie bereits erwähnt, geht die Verwendung von cURL weit über HTTP und FTP hinaus, da der Eintrag auf der Handbuchseite von curl zusätzliche Protokolle in der Beschreibung erwähnt:

Außerdem werden Sie feststellen, dass curl auch für PUT- und POST-Anforderungen, Cookies, Proxys, Tunnel, Downloads fortsetzen und sogar HTTP-Header-Informationen abrufen oder einen Benutzeragenten ändern kann (effektives Spoofing). ohne dass ein dedizierter Webbrowser verwendet werden muss.

Wie bei den meisten Befehlszeilendienstprogrammen können Sie viel mehr über curl erfahren, indem Sie die entsprechende Manpage mit dem Befehl „man curl“ aufrufen.

Verwenden von cURL zum Herunterladen von Remote-Dateien über die Befehlszeile