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

-o

Skriv utdata till en namngiven fil istället för stdout

-O

Skriv utdata till en fil med samma namn som fjärrfilen

-L

Följ HTTP 3xx-omdirigeringar automatiskt

-C -

Fortsätt/återuppta en tidigare filöverföring

--limit-rate

Begränsa överföringshastigheten till den angivna hastigheten

--max-filesize

Vägra ladda ner filer som är större än den angivna storleken

-J

Använd Content-Disposition-headern för att namnge filen

-#

Visa överföringsförloppet som en enkel förloppsindikator

-u

Ange användarnamn:lösenord för serverautentisering

--retry

Försök överföringen igen vid tillfälliga fel (antal gånger)

--retry-delay

Vänta detta antal sekunder mellan återförsök

-T

Ladda upp en lokal fil till en URL (PUT som standard)

--create-dirs

Skapa lokala kataloger vid behov när utdata sparas

-s

Undertryck förloppsmätare och felmeddelanden

--output-dir

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 -o nä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 -L för att hantera omdirigeringar och -s för tyst drift i skript.
$ curl -o report.pdf https://example.com/files/report.pdf

curl -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 heter data.csv i den aktuella katalogen.
Vanlig användning
Använd -O nä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 -o istället.
$ curl -O https://example.com/files/data.csv

curl -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 -L returnerar 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 -L med -o eller -O vid 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.gz

curl -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 HTTP Range-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 en Range: 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.zip

curl --limit-rate: Begränsa nedladdningshastighet

Vad den gör
Flaggan --limit-rate begränsar nedladdnings- (och uppladdnings-) hastigheten till den angivna hastigheten. Den accepterar suffix: k eller K för kilobyte/s, m eller M för megabyte/s, g eller G för gigabyte/s.
Vanlig användning
Använd --limit-rate fö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.iso

curl --max-filesize: Avbryt om filen är för stor

Vad den gör
Flaggan --max-filesize talar om för curl att avbryta överföringen om den förväntade filstorleken (från Content-Length-headern) överskrider den angivna gränsen. Storleken kan använda suffix som k, 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.bin

curl -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 serverns Content-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 -J med -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=csv

curl -#: 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.gz

Ytterligare nedladdningsalternativ

-u

Ange användarnamn:lösenord för serverautentisering

--retry

Försök överföringen igen vid tillfälliga fel (antal gånger)

--retry-delay

Vänta detta antal sekunder mellan återförsök

-T

Ladda upp en lokal fil till en URL (PUT som standard)

--create-dirs

Skapa lokala kataloger vid behov när utdata sparas

-s

Undertryck förloppsmätare och felmeddelanden

--output-dir

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.txt

Ladda 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.sql

Ladda 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/export

På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.zip

Vanliga 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.