Bestanden downloaden met curl

curl is een van de meest veelzijdige opdrachtregelhulpmiddelen voor het downloaden van bestanden via HTTP, HTTPS, FTP en tientallen andere protocollen. Of u nu een enkel API-antwoord naar een bestand wilt opslaan of batchdownloads in een shellscript wilt automatiseren, curl heeft er een vlag voor. Deze gids behandelt elke downloadgerelateerde optie — van eenvoudig opslaan met -o en -O tot het hervatten van onderbroken overdrachten met -C -, het beperken van bandbreedte met --limit-rate en het tonen van voortgangsbalken. Elke vlag bevat een duidelijke uitleg, veelvoorkomende gebruikspatronen en een kant-en-klaar voorbeeld.

Snelreferentie Downloadvlaggen

-o

Schrijf uitvoer naar een opgegeven bestand in plaats van stdout

-O

Schrijf uitvoer naar een bestand met dezelfde naam als het externe bestand

-L

Volg HTTP 3xx redirects automatisch

-C -

Ga verder met/hervat een eerdere bestandsoverdracht

--limit-rate

Beperk de overdrachtssnelheid tot het opgegeven tarief

--max-filesize

Weiger bestanden te downloaden die groter zijn dan de opgegeven grootte

-J

Gebruik de Content-Disposition header om het bestand te benoemen

-#

Toon overdrachtsvoortgang als een eenvoudige voortgangsbalk

-u

Gebruikersnaam:wachtwoord opgeven voor serverauthenticatie

--retry

De overdracht opnieuw proberen bij tijdelijke fouten (aantal keren)

--retry-delay

Dit aantal seconden wachten tussen herhaalpogingen

-T

Een lokaal bestand uploaden naar een URL (standaard PUT)

--create-dirs

Lokale mappen aanmaken indien nodig bij het opslaan van uitvoer

-s

Voortgangsmeter en foutmeldingen onderdrukken

--output-dir

Uitvoerbestand(en) opslaan in de opgegeven map (curl 7.73+)

curl -o: Opslaan met een specifieke bestandsnaam

Wat het doet
De -o (of --output) vlag vertelt curl om de responsbody op te slaan in een bestand dat u opgeeft. Zonder deze vlag drukt curl de respons af naar stdout (uw terminal). U kunt elke bestandsnaam en elk pad gebruiken — curl maakt het bestand aan of overschrijft een bestaand bestand.
Gangbaar gebruik
Gebruik -o wanneer u de exacte bestandsnaam wilt bepalen of wilt opslaan in een specifieke map. Het werkt met elk protocol — HTTP, HTTPS, FTP, SFTP en meer. Combineer met -L om redirects te verwerken en -s voor stille werking in scripts.
$ curl -o report.pdf https://example.com/files/report.pdf

curl -O: Opslaan met de externe bestandsnaam

Wat het doet
De -O (of --remote-name) vlag slaat het gedownloade bestand op met de bestandsnaam die uit de URL is gehaald. Als de URL bijvoorbeeld eindigt op /data.csv, maakt curl een bestand met de naam data.csv in de huidige map.
Gangbaar gebruik
Gebruik -O wanneer de externe bestandsnaam betekenisvol is en u deze niet hoeft te hernoemen. U kunt meerdere -O vlaggen doorgeven om meerdere bestanden in één opdracht te downloaden. Let op: als de URL geen bestandsnaam bevat (bijv. eindigt op /), zal curl mislukken — gebruik dan -o.
$ curl -O https://example.com/files/data.csv

curl -L: Redirects volgen

Wat het doet
De -L (of --location) vlag zorgt ervoor dat curl automatisch HTTP-redirects volgt — 301 (Permanent verplaatst), 302 (Gevonden), 307 en 308. Zonder -L retourneert curl de redirectrespons zelf in plaats van de daadwerkelijke inhoud.
Gangbaar gebruik
De meeste download-URL's verwijzen minstens één keer door (bijv. van HTTP naar HTTPS, of van een korte URL naar het eigenlijke bestand). Combineer altijd -L met -o of -O bij het downloaden van bestanden. Standaard volgt curl maximaal 50 redirects; wijzig dit met --max-redirs.
$ curl -L -o latest.tar.gz https://github.com/user/repo/releases/latest/download/app.tar.gz

curl -C -: Onderbroken downloads hervatten

Wat het doet
De -C - (of --continue-at -) vlag vertelt curl om automatisch de grootte van het bestaande gedeeltelijke bestand te detecteren en de download te hervatten vanaf het punt waar deze was gestopt. De server moet de HTTP Range-header ondersteunen.
Gangbaar gebruik
Als een grote download werd onderbroken door een netwerkprobleem of time-out, voer dan gewoon dezelfde opdracht opnieuw uit met -C - toegevoegd. curl stuurt een Range: bytes=OFFSET- header en downloadt alleen de resterende gegevens. Dit is essentieel voor grote bestanden via onbetrouwbare verbindingen.
$ curl -C - -o largefile.zip https://cdn.example.com/largefile.zip

curl --limit-rate: Downloadsnelheid beperken

Wat het doet
De --limit-rate vlag beperkt de download- (en upload)snelheid tot het opgegeven tarief. Het accepteert achtervoegsels: k of K voor kilobytes/s, m of M voor megabytes/s, g of G voor gigabytes/s.
Gangbaar gebruik
Gebruik --limit-rate om te voorkomen dat uw bandbreedte volledig wordt gebruikt bij het downloaden van grote bestanden, vooral op gedeelde verbindingen. Het is ook nuttig om te testen hoe uw applicatie omgaat met trage reacties.
$ curl --limit-rate 1M -o bigfile.iso https://mirror.example.com/bigfile.iso

curl --max-filesize: Afbreken als bestand te groot is

Wat het doet
De --max-filesize vlag vertelt curl om de overdracht af te breken als de verwachte bestandsgrootte (uit de Content-Length header) de opgegeven limiet overschrijdt. De grootte kan achtervoegsels gebruiken zoals k, M, G.
Gangbaar gebruik
Gebruik in scripts om te voorkomen dat onverwacht grote downloads schijfruimte in beslag nemen. Merk op dat niet alle servers Content-Length verzenden — in dat geval kan curl deze limiet niet afdwingen en gaat de download normaal door.
$ curl --max-filesize 100M -o update.bin https://example.com/update.bin

curl -J: Door server voorgestelde bestandsnaam gebruiken

Wat het doet
De -J (of --remote-header-name) vlag vertelt curl om de bestandsnaam te gebruiken die is opgegeven in de Content-Disposition header van de server, in plaats van deze uit de URL af te leiden. Dit is gebruikelijk voor download-API's die bestanden met betekenisvolle namen retourneren.
Gangbaar gebruik
Combineer -J altijd met -O. Dit is nuttig wanneer de URL een API-eindpunt is (zoals /export?format=csv) maar de server een juiste bestandsnaam in de headers retourneert. Beveiligingsopmerking: de server bepaalt de bestandsnaam, dus gebruik dit alleen met vertrouwde servers.
$ curl -L -O -J https://example.com/api/export?format=csv

curl -#: Een voortgangsbalk tonen

Wat het doet
De -# (of --progress-bar) vlag vervangt de standaard uitgebreide voortgangsmeter door een eenvoudige ### voortgangsbalk. Dit is gemakkelijker te lezen voor interactief gebruik.
Gangbaar gebruik
Gebruik -# wanneer u interactief downloadt en een overzichtelijke voortgangsindicator wilt. Gebruik voor scripts liever -s (stil) of de standaard voortgangsmeter. De standaard curl-uitvoer toont al snelheid, percentage, resterende tijd en totale grootte.
$ curl -# -o archive.tar.gz https://example.com/archive.tar.gz

Aanvullende downloadopties

-u

Gebruikersnaam:wachtwoord opgeven voor serverauthenticatie

--retry

De overdracht opnieuw proberen bij tijdelijke fouten (aantal keren)

--retry-delay

Dit aantal seconden wachten tussen herhaalpogingen

-T

Een lokaal bestand uploaden naar een URL (standaard PUT)

--create-dirs

Lokale mappen aanmaken indien nodig bij het opslaan van uitvoer

-s

Voortgangsmeter en foutmeldingen onderdrukken

--output-dir

Uitvoerbestand(en) opslaan in de opgegeven map (curl 7.73+)

Praktische downloadscenario's

Deze voorbeelden combineren meerdere vlaggen om veelvoorkomende downloadtaken aan te pakken die u in dagelijkse ontwikkeling en scripting tegenkomt.

Meerdere bestanden tegelijk downloaden

Gebruik meerdere -O vlaggen om meerdere bestanden in één opdracht te downloaden. curl verwerkt ze opeenvolgend. Gebruik voor parallelle downloads xargs of GNU parallel.

$ curl -O https://example.com/file1.txt -O https://example.com/file2.txt -O https://example.com/file3.txt

Downloaden van een FTP-server

curl ondersteunt FTP, FTPS en SFTP native. Voeg -u user:password toe voor geauthenticeerde toegang. Gebruik -O om de externe bestandsnaam te behouden.

$ curl -u user:pass -o backup.sql ftp://ftp.example.com/db/backup.sql

Downloaden met authenticatie

Gebruik -u user:pass voor Basic Auth, of -H om een Bearer-token of API-sleutel mee te sturen. Combineer met -L en -o voor een volledige download.

$ curl -H "Authorization: Bearer eyJhbGciOi..." -L -o data.json https://api.example.com/export

Betrouwbare download met hervatten en opnieuw proberen

Combineer -C - (hervatten), --retry (automatisch opnieuw proberen bij mislukking) en -L (redirects volgen) voor robuuste downloads die netwerkonderbrekingen overleven.

$ curl -C - --retry 5 --retry-delay 10 -L -o largefile.zip https://cdn.example.com/largefile.zip

Veelgestelde vragen over downloaden met curl

Wat is het verschil tussen curl -o en curl -O?

-o bestandsnaam slaat de download op onder de exacte bestandsnaam die u opgeeft. -O haalt de bestandsnaam uit de URL en gebruikt die. Gebruik -o wanneer u een aangepaste naam of pad wilt; gebruik -O wanneer de externe bestandsnaam voldoet.

Waarom downloadt curl een leeg of HTML-bestand in plaats van het eigenlijke bestand?

De URL retourneert waarschijnlijk een HTTP-redirect (301 of 302). Standaard slaat curl de redirectrespons zelf op — niet de uiteindelijke inhoud. Voeg -L toe om redirects automatisch te volgen: curl -L -o bestand URL.

Hoe hervat ik een gedeeltelijk gedownload bestand met curl?

Gebruik curl -C - -o bestandsnaam URL. De -C - vlag detecteert de bestaande bestandsgrootte en stuurt een Range-header om alleen de resterende bytes op te vragen. De server moet rangeverzoeken ondersteunen.

Hoe beperk ik de downloadsnelheid in curl?

Gebruik --limit-rate met een waarde en achtervoegsel: curl --limit-rate 500k -o bestand URL beperkt de snelheid tot 500 KB/s. Achtervoegsels: k (KB/s), M (MB/s), G (GB/s).

Kan curl meerdere bestanden tegelijk downloaden?

Ja. Gebruik meerdere -O vlaggen: curl -O URL1 -O URL2 -O URL3. curl downloadt ze opeenvolgend. Gebruik voor parallelle downloads xargs -P 4 -I {} curl -O {}.

Hoe download ik een bestand dat authenticatie vereist?

Voor HTTP Basic Auth: curl -u user:pass -o bestand URL. Voor Bearer-tokens: curl -H "Authorization: Bearer TOKEN" -o bestand URL. Voor API-sleutels in headers: curl -H "X-API-Key: KEY" -o bestand URL.

Hoe download ik bestanden van een FTP-server met curl?

Gebruik curl -u user:pass -o lokaalbestand ftp://host/pad/bestand. curl ondersteunt FTP, FTPS (FTP via TLS) en SFTP (SSH FTP) native. Laat voor anonieme FTP -u weg.

Hoe download ik grote bestanden betrouwbaar met curl?

Combineer -C - (hervatten bij mislukking), --retry 5 (automatisch opnieuw proberen), --retry-delay 10 en -L (redirects volgen): curl -C - --retry 5 --retry-delay 10 -L -o bestand URL. Dit handelt netwerkproblemen automatisch af.

Hoe toon ik een voortgangsbalk bij het downloaden met curl?

Gebruik curl -# -o bestand URL voor een eenvoudige voortgangsbalk. De standaard curl-uitvoer toont al overdrachtssnelheid, percentage en geschatte tijd. Gebruik voor scripts -s om alle uitvoer te onderdrukken.

Kan ik een downloadmap opgeven in curl?

Met curl 7.73+ kunt u --output-dir /pad/naar/map combineren met -O. Voor oudere versies geeft u het volledige pad op met -o /pad/naar/map/bestandsnaam. Voeg --create-dirs toe als de map nog niet bestaat.

Moet ik curl of wget gebruiken voor het downloaden van bestanden?

Beide zijn uitstekend. wget is eenvoudiger voor recursieve website-mirroring en heeft ingebouwde herhalingslogica. curl ondersteunt meer dan 25 protocollen (niet alleen HTTP/FTP), is beter voor API-aanroepen en scripting, ondersteunt meer authenticatiemethoden en is beschikbaar op vrijwel elk besturingssysteem.

Hoe gebruik ik curl in een bash-script om bestanden te downloaden?

Gebruik curl -fsSL -o bestand URL: -f mislukt stil bij HTTP-fouten (geen foutpagina opgeslagen), -s stil, -S toon fouten zelfs in stille modus, -L volg redirects. Controleer de afsluitcode: if ! curl -fsSL -o bestand URL; then echo "Download mislukt"; exit 1; fi.