Gebruik cURL om externe bestanden te downloaden vanaf de opdrachtregel
Inhoudsopgave:
- Download Exact Match-bestanden met krul -O
- Een extern bestand opslaan met een andere naam met curl -o
- Meerdere bestanden tegelijk downloaden met curl
De krachtige curl-opdrachtregeltool kan worden gebruikt om bestanden te downloaden van vrijwel elke externe server. Langdurige gebruikers van de opdrachtregel weten dat dit nuttig kan zijn in een groot aantal verschillende situaties, maar om het simpel te houden, zullen velen merken dat het downloaden van een bestand met curl vaak een sneller alternatief kan zijn voor het gebruik van een webbrowser of FTP-client vanaf de GUI-kant van Mac OS X (of Linux).Dit is handig voor lokale situaties, maar het is vooral waardevol als u zich in een situatie bevindt waarin u iets naar een externe Mac moet downloaden wanneer u via SSH bent verbonden.
Voor deze walkthrough richten we ons voornamelijk op het downloaden van bestanden van de twee veelgebruikte HTTP- en SFTP-protocollen, hoewel er moet worden opgemerkt dat cURL veel meer protocollen ondersteunt. Hoewel curl eenvoudig te gebruiken is, wordt enige kennis van de opdrachtregel aanbevolen.
Download Exact Match-bestanden met krul -O
Het gebruik van de hoofdletter -O vlag met krul downloadt het bestand van de externe server met behoud van de exacte bestandsnaam, de basissyntaxis hiervoor is de volgende:
krul -O
Dit betekent dat als het opgegeven URL-bestand de naam "sample.zip" heeft, het zal worden gedownload met de bestandsnaam "sample.zip", en als het bestand een enorme en ingewikkelde naam heeft, zoals "LongExampleFileNameForOSXDaily-v- 1-3-51-revisie-515b12-leesmij.txt" op de externe server, wordt het met die exacte naam op de lokale computer opgeslagen. Langere bestandsnamen worden vaak beter verwerkt met de vlag -o in plaats van -O, waar we zo op ingaan.
Vaste lezers herinneren zich misschien dat we de opdracht curl -O gebruikten toen we uitlegden hoe de daadwerkelijke audio-inhoud uit een m3u-streamingbestand kon worden geëxtraheerd.
Als u een download begint met curl, wordt het overgedragen percentage, de tijd besteed aan het downloaden en de resterende tijd en de overdrachtssnelheid weergegeven.
De schermafbeelding biedt een betere weergave dan het geplakte voorbeeld hieronder, maar het ziet er ongeveer zo uit:
% Totaal % Ontvangen % Xferd Gemiddelde snelheid Tijd Tijd Tijd Huidige Dload Upload Totaal besteed Linkersnelheid 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k
Als de overdrachtssnelheid wordt weergegeven, kunt u de uitvoer van curl omleiden naar /dev/null en deze gebruiken om de snelheid van de internetverbinding te testen, maar het wget-commando heeft een gemakkelijker te lezen en te volgen overdrachtsbalk, dus wget is beter geschikt voor die taak.
Een extern bestand opslaan met een andere naam met curl -o
Als u een kleine letter -o gebruikt, kunt u een andere bestandsnaam opgeven voor het gedownloade bestand dan de naam op de externe server. Dit kan handig zijn om lange bestandsnamen te verkorten of gewoon iets te labelen zodat het gemakkelijker zelf te vinden is. De algemene syntax zou zijn:
krul -o
Als u bijvoorbeeld een iOS IPSW-bestand wilt opslaan dat u op Apple-servers hebt gevonden zonder de lange volledige naam, kunt u het volgende gebruiken:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw
Hiermee wordt het bestand "iPhone5, 3_7.0.4_11B554a_Restore.ipsw" gedownload, maar korter genoemd als het betekenisvollere "iPhone5C-704.ipsw".
Als u het bestand liever niet in de huidige werkdirectory wilt opslaan, geef dan een pad op als onderdeel van de bestandsnaam, zoals:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Meerdere bestanden tegelijk downloaden met curl
cURL kan eenvoudig meerdere bestanden tegelijk downloaden, u hoeft alleen maar meer dan één URL op te geven, zoals:
krul -O
Voor bestanden met verschillende namen, of gehost op verschillende servers, of binnen verschillende mappaden, gebruikt u de volledige URL, bijvoorbeeld:
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licenties/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
Aan de andere kant, als de te downloaden bestandsnamen incrementele naamgeving gebruiken, kunt u haakjes gebruiken om een downloadbereik op te geven, zoals:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
Hierdoor worden de bestanden fdl-1.1.txt, fd1-1.2.txt en fd1-1.3.txt allemaal tegelijk opgehaald zonder dat elke unieke URL hoeft te worden opgegeven. Dit werkt natuurlijk alleen als de bestanden samen in dezelfde directory en op hetzelfde domein staan.
Authentiseren met krul
Je kunt authenticatie ook doorgeven met cURL door de vlag -u te gebruiken:
curl -u user:pass -O ftp://remote_url/file-to-download.zip
Houd er rekening mee dat bash-geschiedenis het wachtwoord in platte tekst opslaat wanneer -u wordt gebruikt met een gebruikersnaam en wachtwoord opgegeven, dus dit wordt in de meeste situaties niet aanbevolen. Je kunt dat omzeilen door een spatie voor ‘krul’ te zetten.Als je de spatiebalk niet gebruikt om de opdracht vooraf te laten gaan, wil je voor de zekerheid de opdrachtgeschiedenis achteraf leegmaken.
Ondersteunde curl-protocollen en gebruik buiten HTTP en FTP
Zoals eerder vermeld, gaat het gebruik van cURL veel verder dan HTTP en FTP, aangezien de invoer van de curl-manpagina aanvullende protocollen vermeldt in de beschrijving:
Bovendien zul je zien dat curl ook kan worden gebruikt voor PUT- en POST-verzoeken, cookies, proxy's, tunnels, downloads van cv's en zelfs het ophalen van HTTP-headerinformatie of het wijzigen van een user-agent (effectieve spoofing) zonder de noodzaak om een speciale webbrowser te gebruiken.
Zoals de meeste hulpprogramma's voor de opdrachtregel kunt u veel meer leren over curl door de juiste man-pagina op te roepen met de opdracht 'man curl'.