Het downloaden van inhoud van externe servers is een veelvoorkomende taak voor zowel beheerders als ontwikkelaars. Hoewel er veel tools voor deze taak bestaan, onderscheidt cURL zich door zijn flexibiliteit en eenvoud. Het is een opdrachtregelprogramma dat protocollen zoals HTTP, HTTPS, FTP en SFTP ondersteunt, wat het onmisbaar maakt voor automatisering, scripting en efficiënte bestandsoverdrachten.
Je kunt cURL rechtstreeks op je computer uitvoeren om bestanden op te halen. Je kunt het ook in scripts opnemen om gegevensbeheer te stroomlijnen, waardoor handmatige fouten en inspanning worden verminderd. Deze gids laat verschillende manieren zien om bestanden te downloaden met cURL. Aan de hand van deze voorbeelden leer je hoe je omgaat met omleidingen, bestanden hernoemt en de voortgang van downloads bewaakt. Aan het einde zul je cURL zelfverzekerd kunnen gebruiken voor taken op servers of in cloudomgevingen.
Het commando curl werkt met meerdere protocollen, maar wordt voornamelijk gebruikt met HTTP en HTTPS om verbinding te maken met webservers. Indien nodig kan het ook communiceren met FTP- of SFTP-servers.
Standaard haalt cURL een bron op van een opgegeven URL en toont deze in je terminal (standaarduitvoer). Dit is handig om de inhoud van een bestand te bekijken zonder het op te slaan, vooral bij kleine tekstbestanden.
Voorbeeld: om de inhoud van een tekstbestand te bekijken dat wordt gehost op https://example.com/file.txt, voer je uit:
curl https://example.com/file.txt
Voor korte tekstbestanden is deze methode geschikt. Voor grote of binaire bestanden kan het scherm echter worden overspoeld met onleesbare gegevens, dus meestal wil je ze opslaan in plaats van weergeven.
Vaak is het hoofddoel om het gedownloade bestand lokaal op te slaan in plaats van het in de terminal te bekijken. cURL maakt dit eenvoudig met de optie -O (hoofdletter O), die de originele bestandsnaam behoudt.
curl -O https://example.com/file.txt
Dit haalt file.txt op en slaat het op in de huidige map met dezelfde naam. Deze methode is snel en behoudt de oorspronkelijke bestandsnaam, wat handig kan zijn als de naam betekenisvol is.
Soms is het belangrijk om het gedownloade bestand een andere naam te geven om conflicten te vermijden of een duidelijk naamgevingssysteem te hanteren. Gebruik in dat geval de optie -o (kleine o):
curl -o mijnbestand.txt https://example.com/file.txt
Hier downloadt cURL het externe bestand file.txt maar slaat het lokaal op als mijnbestand.txt. Dit helpt bij het organiseren van bestanden en voorkomt onbedoelde overschrijvingen. Dit is vooral nuttig in scripts die beschrijvende bestandsnamen vereisen.
Wanneer een bestand wordt opgevraagd, kan de server de client instrueren om naar een andere URL te gaan. Het begrijpen en volgen van omleidingen is essentieel voor succesvolle downloads.
Omleidingen worden vaak gebruikt op herschikte websites, verplaatste bestanden of mirrorlinks. Zonder ondersteuning voor omleidingen stopt cURL na een “verplaatst”-reactie, en ontvang je het bestand niet.
Om cURL een reeks omleidingen te laten volgen tot het einddoel, gebruik je -L (of --location):
curl -L -O https://example.com/redirected-file.jpg
Hierdoor kan cURL het juiste bestand ophalen, zelfs als de oorspronkelijke URL elders naar verwijst. Als je -L weglaat, zal cURL alleen het omleidingsbericht weergeven en stoppen, wat problematisch is voor sites met meerdere omleidingen.
cURL kan ook meerdere bestandsdownloads tegelijk verwerken, zodat je het commando niet herhaaldelijk hoeft uit te voeren.
Als bestandsnamen een patroon delen, kun je accolades {} gebruiken om ze beknopt op te geven:
curl -O https://example.com/files/{file1.jpg,file2.jpg,file3.jpg}
cURL haalt elk bestand opeenvolgend op, wat handig is voor geautomatiseerde workflows.
Voor een reeks genummerde of alfabetisch gelabelde bestanden kun je een bereik opgeven tussen rechte haken:
curl -O https://example.com/files/file[1-5].jpg
cURL doorloopt automatisch de bestanden file1.jpg tot file5.jpg. Dit is ideaal voor reeksen bestanden met consistente namen.
Als je verschillende URL’s hebt voor elk bestand, kun je ze aan elkaar koppelen:
curl -O https://example1.com/file1.jpg -O https://example2.com/file2.jpg
Met deze aanpak downloadt cURL file1.jpg van de eerste site en file2.jpg van de tweede, zonder meerdere commando’s uit te voeren.
In sommige situaties wil je mogelijk de downloadsnelheid beperken of voorkomen dat cURL te lang wacht op een niet-reagerende server.
Om te voorkomen dat je netwerk overbelast raakt of om trage omstandigheden te simuleren, kun je de downloadsnelheid beperken met --limit-rate:
curl --limit-rate 2M -O https://example.com/bigfile.zip
2M staat voor 2 megabyte per seconde. Je kunt ook K voor kilobytes of G voor gigabytes gebruiken.
Als een server te traag is, kun je cURL na een bepaalde tijd laten stoppen. De optie --max-time doet precies dat:
curl --max-time 60 -O https://example.com/file.iso
Hier stopt cURL na 60 seconden, wat handig is in scripts die snel moeten mislukken.
cURL kan de uitvoer aanpassen om minimale of uitgebreide informatie weer te geven.
Voor batchtaken of cronjobs waarbij je geen voortgangsbalk nodig hebt, gebruik je -s (of --silent):
curl -s -O https://example.com/file.jpg
Dit verbergt voortgang en fouten, wat zorgt voor schonere logbestanden. Probleemoplossing is echter moeilijker bij een stille fout.
In tegenstelling hiermee geeft -v (of --verbose) gedetailleerde informatie over verzoeken en antwoorden:
curl -v https://example.com
De uitgebreide uitvoer is waardevol bij het oplossen van problemen zoals ongeldige SSL-certificaten of onjuiste omleidingen.
Sommige downloads vereisen inloggegevens of een beveiligde verbinding.
Wanneer een server een gebruikersnaam en wachtwoord vereist, gebruik je -u:
curl -u username:password -O https://example.com/protected/file.jpg
Het direct opnemen van inloggegevens kan riskant zijn, omdat ze zichtbaar kunnen zijn in logboeken of proceslijsten. Overweeg om omgevingsvariabelen of .netrc-bestanden te gebruiken voor veiliger beheer.
Standaard controleert cURL SSL-certificaten. Als het certificaat ongeldig is, blokkeert cURL de overdracht. Je kunt deze controle overslaan met -k of --insecure, maar dat brengt beveiligingsrisico’s met zich mee. Gebruik indien mogelijk een vertrouwde certificaatautoriteit om geverifieerde verbindingen te behouden.
In sommige omgevingen moet het verkeer via een proxyserver lopen voordat het de bestemming bereikt.
Gebruik de optie -x of --proxy om de proxy te specificeren:
curl -x http://proxy_host:proxy_port -O https://example.com/file.jpg
Vervang proxy_host en proxy_port door de juiste gegevens. cURL stuurt het verzoek naar de proxy, die vervolgens het bestand namens jou ophaalt.
Als je proxy inloggegevens vereist, voeg deze dan toe aan de URL:
curl -x https://proxy.example.com:8080 -U myuser:mypassword -O https://example.com/file.jpg
Ook hier geldt: het opslaan van gevoelige gegevens in platte tekst is gevaarlijk. Gebruik in plaats daarvan omgevingsvariabelen of configuratiebestanden.
Het volgen van de voortgang is belangrijk bij grote bestanden of trage verbindingen.
Standaard toont cURL een voortgangsmeter met de totale grootte, overdrachtsnelheid en geschatte resterende tijd. Bijvoorbeeld:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1256 100 1256 0 0 2243 0 --:--:-- --:--:-- --:--:-- 2246
Dit overzicht helpt je te beoordelen hoeveel er nog resteert en of de overdrachtsnelheid acceptabel is.
Als je minder details wilt, voeg dan -# toe:
curl -# -O https://example.com/largefile.iso
Een eenvoudigere balk toont de algemene voortgang in procenten. Deze is overzichtelijker, maar bevat geen gedetailleerde statistieken zoals de huidige snelheid.
Wanneer je cURL in scripts gebruikt, wil je de voortgangsgegevens mogelijk vastleggen. Normaal gesproken stuurt cURL deze informatie naar stderr, dus je kunt dit omleiden:
curl -# -O https://example.com/largefile.iso 2>progress.log
Hier bevat progress.log de statusupdates, die je later kunt analyseren of opslaan.
cURL is een flexibel opdrachtregelprogramma voor het downloaden van bestanden via verschillende protocollen en omgevingen. Of je nu complexe omleidingen moet afhandelen, bestanden dynamisch wilt hernoemen of de bandbreedte wilt beperken – cURL biedt alle nodige opties. Door de belangrijkste parameters en modi onder de knie te krijgen, kun je cURL naadloos integreren in je dagelijkse workflow voor scripting, automatisering en efficiënte bestandsoverdrachten.