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
Schrijf uitvoer naar een opgegeven bestand in plaats van stdout
Schrijf uitvoer naar een bestand met dezelfde naam als het externe bestand
Volg HTTP 3xx redirects automatisch
Ga verder met/hervat een eerdere bestandsoverdracht
Beperk de overdrachtssnelheid tot het opgegeven tarief
Weiger bestanden te downloaden die groter zijn dan de opgegeven grootte
Gebruik de Content-Disposition header om het bestand te benoemen
Toon overdrachtsvoortgang als een eenvoudige voortgangsbalk
Gebruikersnaam:wachtwoord opgeven voor serverauthenticatie
De overdracht opnieuw proberen bij tijdelijke fouten (aantal keren)
Dit aantal seconden wachten tussen herhaalpogingen
Een lokaal bestand uploaden naar een URL (standaard PUT)
Lokale mappen aanmaken indien nodig bij het opslaan van uitvoer
Voortgangsmeter en foutmeldingen onderdrukken
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
-owanneer 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-Lom redirects te verwerken en-svoor stille werking in scripts.
$ curl -o report.pdf https://example.com/files/report.pdfcurl -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 naamdata.csvin de huidige map. - Gangbaar gebruik
- Gebruik
-Owanneer de externe bestandsnaam betekenisvol is en u deze niet hoeft te hernoemen. U kunt meerdere-Ovlaggen 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.csvcurl -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-Lretourneert 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
-Lmet-oof-Obij 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.gzcurl -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 HTTPRange-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 eenRange: 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.zipcurl --limit-rate: Downloadsnelheid beperken
- Wat het doet
- De
--limit-ratevlag beperkt de download- (en upload)snelheid tot het opgegeven tarief. Het accepteert achtervoegsels:kofKvoor kilobytes/s,mofMvoor megabytes/s,gofGvoor gigabytes/s. - Gangbaar gebruik
- Gebruik
--limit-rateom 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.isocurl --max-filesize: Afbreken als bestand te groot is
- Wat het doet
- De
--max-filesizevlag vertelt curl om de overdracht af te breken als de verwachte bestandsgrootte (uit deContent-Lengthheader) de opgegeven limiet overschrijdt. De grootte kan achtervoegsels gebruiken zoalsk,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-Lengthverzenden — 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.bincurl -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 deContent-Dispositionheader 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
-Jaltijd 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=csvcurl -#: 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.gzAanvullende downloadopties
Gebruikersnaam:wachtwoord opgeven voor serverauthenticatie
De overdracht opnieuw proberen bij tijdelijke fouten (aantal keren)
Dit aantal seconden wachten tussen herhaalpogingen
Een lokaal bestand uploaden naar een URL (standaard PUT)
Lokale mappen aanmaken indien nodig bij het opslaan van uitvoer
Voortgangsmeter en foutmeldingen onderdrukken
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.txtDownloaden 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.sqlDownloaden 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/exportBetrouwbare 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.zipVeelgestelde 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.