Hur man laddar ner filer med curl
curl är ett av de mest mångsidiga kommandoradsverktygen för att ladda ner filer via HTTP, HTTPS, FTP och dussintals andra protokoll. Oavsett om du behöver spara ett enda API-svar till en fil eller automatisera batchnedladdningar i ett skalskript, har curl en flagga för det. Den här guiden täcker alla nedladdningsrelaterade alternativ — från enkel filsparning med -o och -O till återupptagning av avbrutna överföringar med -C -, bandbreddsbegränsning med --limit-rate och visning av förloppsindikatorer. Varje flagga inkluderar en tydlig förklaring, vanliga användningsmönster och ett kopieringsklart exempel.
Snabbreferens för nedladdningsflaggor
Skriv utdata till en namngiven fil istället för stdout
Skriv utdata till en fil med samma namn som fjärrfilen
Följ HTTP 3xx-omdirigeringar automatiskt
Fortsätt/återuppta en tidigare filöverföring
Begränsa överföringshastigheten till den angivna hastigheten
Vägra ladda ner filer som är större än den angivna storleken
Använd Content-Disposition-headern för att namnge filen
Visa överföringsförloppet som en enkel förloppsindikator
Ange användarnamn:lösenord för serverautentisering
Försök överföringen igen vid tillfälliga fel (antal gånger)
Vänta detta antal sekunder mellan återförsök
Ladda upp en lokal fil till en URL (PUT som standard)
Skapa lokala kataloger vid behov när utdata sparas
Undertryck förloppsmätare och felmeddelanden
Spara utdatafil(er) i den angivna katalogen (curl 7.73+)
curl -o: Spara till ett specifikt filnamn
- Vad den gör
- Flaggan
-o(eller--output) talar om för curl att spara svarskroppen till en fil som du anger. Utan den skriver curl svaret till stdout (din terminal). Du kan använda valfritt filnamn och sökväg — curl skapar filen eller skriver över en befintlig. - Vanlig användning
- Använd
-onär du behöver kontrollera det exakta filnamnet eller spara till en specifik katalog. Det fungerar med alla protokoll — HTTP, HTTPS, FTP, SFTP och fler. Kombinera med-Lför att hantera omdirigeringar och-sför tyst drift i skript.
$ curl -o report.pdf https://example.com/files/report.pdfcurl -O: Spara med fjärrfilnamnet
- Vad den gör
- Flaggan
-O(eller--remote-name) sparar den nedladdade filen med filnamnet som hämtas från URL:en. Till exempel, om URL:en slutar med/data.csv, skapar curl en fil som heterdata.csvi den aktuella katalogen. - Vanlig användning
- Använd
-Onär fjärrfilnamnet är meningsfullt och du inte behöver byta namn på det. Du kan ange flera-O-flaggor för att ladda ner flera filer i ett kommando. Observera: om URL:en inte innehåller ett filnamn (t.ex. slutar med/), kommer curl att misslyckas — använd-oistället.
$ curl -O https://example.com/files/data.csvcurl -L: Följ omdirigeringar
- Vad den gör
- Flaggan
-L(eller--location) gör att curl automatiskt följer HTTP-omdirigeringar — 301 (Permanent omdirigering), 302 (Hittad), 307 och 308. Utan-Lreturnerar curl omdirigeringssvaret självt istället för det faktiska innehållet. - Vanlig användning
- De flesta nedladdningsadresser omdirigerar åtminstone en gång (t.ex. från HTTP till HTTPS, eller från en kort URL till den faktiska filen). Kombinera alltid
-Lmed-oeller-Ovid nedladdning av filer. Som standard följer curl upp till 50 omdirigeringar; ändra detta med--max-redirs.
$ curl -L -o latest.tar.gz https://github.com/user/repo/releases/latest/download/app.tar.gzcurl -C -: Återuppta avbrutna nedladdningar
- Vad den gör
- Flaggan
-C -(eller--continue-at -) talar om för curl att automatiskt upptäcka storleken på den befintliga delfilen och återuppta nedladdningen från den punkt där den avbröts. Servern måste stödja HTTPRange-headern för att detta ska fungera. - Vanlig användning
- Om en stor nedladdning avbröts av ett nätverksproblem eller timeout, kör helt enkelt samma kommando igen med
-C -tillagt. curl skickar enRange: bytes=OFFSET--header och laddar bara ner den återstående datan. Detta är nödvändigt för stora filer över opålitliga anslutningar.
$ curl -C - -o largefile.zip https://cdn.example.com/largefile.zipcurl --limit-rate: Begränsa nedladdningshastighet
- Vad den gör
- Flaggan
--limit-ratebegränsar nedladdnings- (och uppladdnings-) hastigheten till den angivna hastigheten. Den accepterar suffix:kellerKför kilobyte/s,mellerMför megabyte/s,gellerGför gigabyte/s. - Vanlig användning
- Använd
--limit-rateför att undvika att mätta din bandbredd vid nedladdning av stora filer, särskilt på delade anslutningar. Det är också användbart för att testa hur din applikation hanterar långsamma svar.
$ curl --limit-rate 1M -o bigfile.iso https://mirror.example.com/bigfile.isocurl --max-filesize: Avbryt om filen är för stor
- Vad den gör
- Flaggan
--max-filesizetalar om för curl att avbryta överföringen om den förväntade filstorleken (frånContent-Length-headern) överskrider den angivna gränsen. Storleken kan använda suffix somk,M,G. - Vanlig användning
- Använd i skript för att förhindra att oväntat stora nedladdningar förbrukar diskutrymme. Observera att inte alla servrar skickar
Content-Length— i så fall kan curl inte tillämpa denna gräns och nedladdningen fortsätter normalt.
$ curl --max-filesize 100M -o update.bin https://example.com/update.bincurl -J: Använd serverföreslagen filnamn
- Vad den gör
- Flaggan
-J(eller--remote-header-name) talar om för curl att använda filnamnet som anges i servernsContent-Disposition-header istället för att härleda det från URL:en. Detta är vanligt för nedladdnings-API:er som returnerar filer med meningsfulla namn. - Vanlig användning
- Kombinera alltid
-Jmed-O. Detta är användbart när URL:en är en API-endpoint (som/export?format=csv) men servern returnerar ett korrekt filnamn i headerarna. Säkerhetsanmärkning: servern kontrollerar filnamnet, så använd bara med betrodda servrar.
$ curl -L -O -J https://example.com/api/export?format=csvcurl -#: Visa en förloppsindikator
- Vad den gör
- Flaggan
-#(eller--progress-bar) ersätter den vanliga detaljerade förloppsmätaren med en enkel###-förloppsindikator. Detta är lättare att läsa vid interaktiv användning. - Vanlig användning
- Använd
-#vid interaktiv nedladdning när du vill ha en ren förloppsindikator. För skript, föredra-s(tyst) eller den vanliga förloppsmätaren. curl:s standardutdata visar redan hastighet, procent, återstående tid och total storlek.
$ curl -# -o archive.tar.gz https://example.com/archive.tar.gzYtterligare nedladdningsalternativ
Ange användarnamn:lösenord för serverautentisering
Försök överföringen igen vid tillfälliga fel (antal gånger)
Vänta detta antal sekunder mellan återförsök
Ladda upp en lokal fil till en URL (PUT som standard)
Skapa lokala kataloger vid behov när utdata sparas
Undertryck förloppsmätare och felmeddelanden
Spara utdatafil(er) i den angivna katalogen (curl 7.73+)
Verkliga nedladdningsscenarier
Dessa exempel kombinerar flera flaggor för att hantera vanliga nedladdningsuppgifter som du stöter på i daglig utveckling och skriptning.
Ladda ner flera filer samtidigt
Använd flera -O-flaggor för att ladda ner flera filer i ett kommando. curl bearbetar dem sekventiellt. För parallella nedladdningar, använd xargs eller GNU parallel.
$ curl -O https://example.com/file1.txt -O https://example.com/file2.txt -O https://example.com/file3.txtLadda ner från en FTP-server
curl stöder FTP, FTPS och SFTP inbyggt. Lägg till -u user:password för autentiserad åtkomst. Använd -O för att behålla fjärrfilnamnet.
$ curl -u user:pass -o backup.sql ftp://ftp.example.com/db/backup.sqlLadda ner med autentisering
Använd -u user:pass för Basic Auth, eller -H för att skicka en Bearer-token eller API-nyckel. Kombinera med -L och -o för en komplett nedladdning.
$ curl -H "Authorization: Bearer eyJhbGciOi..." -L -o data.json https://api.example.com/exportPålitlig nedladdning med återupptagning och omförsök
Kombinera -C - (återupptagning), --retry (automatiskt omförsök vid fel) och -L (följ omdirigeringar) för robusta nedladdningar som överlever nätverksavbrott.
$ curl -C - --retry 5 --retry-delay 10 -L -o largefile.zip https://cdn.example.com/largefile.zipVanliga frågor om nedladdning med curl
Vad är skillnaden mellan curl -o och curl -O?
-o filnamn sparar nedladdningen till det exakta filnamnet du anger. -O hämtar filnamnet från URL:en och använder det. Använd -o när du vill ha ett anpassat namn eller sökväg; använd -O när fjärrfilnamnet duger som det är.
Varför laddar curl ner en tom eller HTML-fil istället för den faktiska filen?
URL:en returnerar troligen en HTTP-omdirigering (301 eller 302). Som standard sparar curl omdirigeringssvaret självt — inte det slutliga innehållet. Lägg till -L för att följa omdirigeringar automatiskt: curl -L -o fil URL.
Hur återupptar jag en delvis nedladdad fil med curl?
Använd curl -C - -o filnamn URL. Flaggan -C - upptäcker den befintliga filstorleken och skickar en Range-header för att begära endast de återstående byten. Servern måste stödja range-förfrågningar för att detta ska fungera.
Hur begränsar jag nedladdningshastigheten i curl?
Använd --limit-rate med ett värde och suffix: curl --limit-rate 500k -o fil URL begränsar hastigheten till 500 KB/s. Suffix: k (KB/s), M (MB/s), G (GB/s).
Kan curl ladda ner flera filer samtidigt?
Ja. Använd flera -O-flaggor: curl -O URL1 -O URL2 -O URL3. curl laddar ner dem sekventiellt. För parallella nedladdningar, skicka en URL-lista till xargs -P 4 -I {} curl -O {}.
Hur laddar jag ner en fil som kräver autentisering?
För HTTP Basic Auth: curl -u user:pass -o fil URL. För Bearer-tokens: curl -H "Authorization: Bearer TOKEN" -o fil URL. För API-nycklar i headers: curl -H "X-API-Key: KEY" -o fil URL.
Hur laddar jag ner filer från en FTP-server med curl?
Använd curl -u user:pass -o localfile ftp://host/path/file. curl stöder FTP, FTPS (FTP över TLS) och SFTP (SSH FTP) inbyggt. För anonym FTP, utelämna -u.
Hur laddar jag ner stora filer tillförlitligt med curl?
Kombinera -C - (återupptagning vid fel), --retry 5 (automatiskt omförsök), --retry-delay 10 och -L (följ omdirigeringar): curl -C - --retry 5 --retry-delay 10 -L -o fil URL. Detta hanterar nätverksstörningar automatiskt.
Hur visar jag en förloppsindikator vid nedladdning med curl?
Använd curl -# -o fil URL för en enkel förloppsindikator. curl:s standardutdata visar redan överföringshastighet, procent och uppskattad tid. För skript, använd -s för att undertrycka all utdata.
Kan jag ange en nedladdningskatalog i curl?
Med curl 7.73+ kan du använda --output-dir /path/to/dir kombinerat med -O. För äldre versioner, ange den fullständiga sökvägen med -o /path/to/dir/filename. Lägg till --create-dirs om katalogen inte finns ännu.
Bör jag använda curl eller wget för att ladda ner filer?
Båda är utmärkta. wget är enklare för rekursiv webbspegling och har inbyggd omförsökslogik. curl stöder 25+ protokoll (inte bara HTTP/FTP), är bättre för API-anrop och skriptning, stöder fler autentiseringsmetoder och är tillgängligt på praktiskt taget alla operativsystem.
Hur använder jag curl i ett bash-skript för att ladda ner filer?
Använd curl -fsSL -o fil URL: -f misslyckas tyst vid HTTP-fel (ingen felsida sparas), -s tyst, -S visa fel även i tyst läge, -L följ omdirigeringar. Kontrollera slutkoden: if ! curl -fsSL -o fil URL; then echo "Nedladdning misslyckades"; exit 1; fi.