Sådan downloader du filer med curl
curl er et af de mest alsidige kommandolinjeværktøjer til at downloade filer over HTTP, HTTPS, FTP og snesevis af andre protokoller. Uanset om du skal gemme et enkelt API-svar til en fil eller automatisere batch-downloads i et shell-script, har curl et flag til det. Denne guide dækker alle download-relaterede muligheder — fra grundlaeggende fillagring med -o og -O til genoptagelse af afbrudte overførsler med -C -, begrænsning af bandbredde med --limit-rate og visning af fremskridtsbjælker. Hvert flag inkluderer en klar forklaring, almindelige brugsmønstre og et kopierklart eksempel.
Hurtig reference for download-flag
Skriv output til en navngivet fil i stedet for stdout
Skriv output til en fil navngivet som fjernfilen
Følg HTTP 3xx omdirigeringer automatisk
Fortsæt/genoptag en tidligere filoverførsel
Begræns overførselshastigheden til den angivne rate
Afvis at downloade filer større end den angivne størrelse
Brug Content-Disposition headeren til at navngive filen
Vis overførselsfremskridt som en simpel fremskridtsbjælke
Angiv brugernavn:adgangskode til serverautentificering
Gentag overførslen ved midlertidige fejl (antal gange)
Vent dette antal sekunder mellem gentagelser
Upload en lokal fil til en URL (PUT som standard)
Opret lokale mapper efter behov ved gemning af output
Undertryk fremskridtsmåler og fejlbeskeder
Gem outputfil(er) i den angivne mappe (curl 7.73+)
curl -o: Gem med et bestemt filnavn
- Hvad det gør
- Flaget
-o(eller--output) fortaeller curl at gemme svarteksten i en fil, du angiver. Uden det udskriver curl svaret til stdout (din terminal). Du kan bruge ethvert filnavn og sti — curl opretter filen eller overskriver en eksisterende. - Almindelig brug
- Brug
-onår du skal kontrollere det nøjagtige filnavn eller gemme i en bestemt mappe. Det virker med alle protokoller — HTTP, HTTPS, FTP, SFTP og flere. Kombiner med-Ltil at håndtere omdirigeringer og-stil lydløs drift i scripts.
$ curl -o report.pdf https://example.com/files/report.pdfcurl -O: Gem med fjernfilens navn
- Hvad det gør
- Flaget
-O(eller--remote-name) gemmer den downloadede fil med filnavnet udtrukket fra URL'en. For eksempel, hvis URL'en ender med/data.csv, opretter curl en fil kaldetdata.csvi den aktuelle mappe. - Almindelig brug
- Brug
-Onår fjernfilnavnet er meningsfuldt, og du ikke behøver at omdøbe det. Du kan sende flere-Oflag for at downloade flere filer med en kommando. Bemærk: hvis URL'en ikke indeholder et filnavn (f.eks. ender med/), fejler curl — brug-oi stedet.
$ curl -O https://example.com/files/data.csvcurl -L: Følg omdirigeringer
- Hvad det gør
- Flaget
-L(eller--location) får curl til automatisk at følge HTTP-omdirigeringer — 301 (Moved Permanently), 302 (Found), 307 og 308. Uden-Lreturnerer curl selve omdirigeringssvaret i stedet for det faktiske indhold. - Almindelig brug
- De fleste download-URL'er omdirigerer mindst en gang (f.eks. fra HTTP til HTTPS eller fra en kort URL til den faktiske fil). Kombiner altid
-Lmed-oeller-Oved download af filer. Som standard følger curl op til 50 omdirigeringer; ændr dette med--max-redirs.
$ curl -L -o latest.tar.gz https://github.com/user/repo/releases/latest/download/app.tar.gzcurl -C -: Genoptag afbrudte downloads
- Hvad det gør
- Flaget
-C -(eller--continue-at -) fortaeller curl at automatisk detektere størrelsen på den eksisterende delvise fil og genoptage downloaden derfra, hvor den stoppede. Serveren skal understoette HTTPRange-headeren for at dette virker. - Almindelig brug
- Hvis en stor download blev afbrudt af et netværksproblem eller timeout, koer blot den samme kommando igen med
-C -tilføjet. curl sender enRange: bytes=OFFSET-header og downloader kun de resterende data. Dette er essentielt for store filer over upålidelige forbindelser.
$ curl -C - -o largefile.zip https://cdn.example.com/largefile.zipcurl --limit-rate: Begræns downloadhastighed
- Hvad det gør
- Flaget
--limit-ratesætter et loft over download- (og upload-) hastigheden til den angivne rate. Det accepterer suffikser:kellerKfor kilobytes/s,mellerMfor megabytes/s,gellerGfor gigabytes/s. - Almindelig brug
- Brug
--limit-ratefor at undgå at mætte din båndbredde ved download af store filer, især på delte forbindelser. Det er ogsaa nyttigt til at teste, hvordan din applikation håndterer langsomme svar.
$ curl --limit-rate 1M -o bigfile.iso https://mirror.example.com/bigfile.isocurl --max-filesize: Afbryd hvis filen er for stor
- Hvad det gør
- Flaget
--max-filesizefortaeller curl at afbryde overførslen, hvis den forventede filstørrelse (fraContent-Lengthheaderen) overstiger den angivne grænse. Stoerrelsen kan bruge suffikser somk,M,G. - Almindelig brug
- Brug i scripts for at forhindre uventet store downloads i at forbruge diskplads. Bemærk at ikke alle servere sender
Content-Length— i saa fald kan curl ikke håndhæve denne grænse, og downloaden fortsætter normalt.
$ curl --max-filesize 100M -o update.bin https://example.com/update.bincurl -J: Brug serverforeslået filnavn
- Hvad det gør
- Flaget
-J(eller--remote-header-name) fortaeller curl at bruge filnavnet angivet i serverensContent-Dispositionheader i stedet for at udlede det fra URL'en. Dette er almindeligt for download-API'er, der returnerer filer med meningsfulde navne. - Almindelig brug
- Kombiner altid
-Jmed-O. Dette er nyttigt, når URL'en er et API-endpoint (som/export?format=csv), men serveren returnerer et korrekt filnavn i headerne. Sikkerhedsnote: serveren kontrollerer filnavnet, saa brug kun med betroede servere.
$ curl -L -O -J https://example.com/api/export?format=csvcurl -#: Vis en fremskridtsbjælke
- Hvad det gør
- Flaget
-#(eller--progress-bar) erstatter den detaljerede standard-fremskridtsmåler med en simpel###fremskridtsbjælke. Den er nemmere at læse ved interaktiv brug. - Almindelig brug
- Brug
-#ved interaktiv download, når du vil have en ren fremskridtsindikator. Til scripts foretrækkes-s(lydløs) eller standard-fremskridtsmåleren. Standard curl-output viser allerede hastighed, procent, resterende tid og total størrelse.
$ curl -# -o archive.tar.gz https://example.com/archive.tar.gzYderligere downloadmuligheder
Angiv brugernavn:adgangskode til serverautentificering
Gentag overførslen ved midlertidige fejl (antal gange)
Vent dette antal sekunder mellem gentagelser
Upload en lokal fil til en URL (PUT som standard)
Opret lokale mapper efter behov ved gemning af output
Undertryk fremskridtsmåler og fejlbeskeder
Gem outputfil(er) i den angivne mappe (curl 7.73+)
Virkelige download-scenarier
Disse eksempler kombinerer flere flag for at håndtere almindelige downloadopgaver, du vil møde i daglig udvikling og scripting.
Download flere filer på en gang
Brug flere -O flag for at downloade flere filer med en kommando. curl behandler dem sekventielt. Til parallelle downloads, brug xargs eller GNU parallel.
$ curl -O https://example.com/file1.txt -O https://example.com/file2.txt -O https://example.com/file3.txtDownload fra en FTP-server
curl understoetter FTP, FTPS og SFTP indbygget. Tilføj -u user:password for autentificeret adgang. Brug -O for at beholde fjernfilnavnet.
$ curl -u user:pass -o backup.sql ftp://ftp.example.com/db/backup.sqlDownload med autentificering
Brug -u user:pass til Basic Auth eller -H til at sende et Bearer-token eller API-nøgle. Kombiner med -L og -o for en komplet download.
$ curl -H "Authorization: Bearer eyJhbGciOi..." -L -o data.json https://api.example.com/exportPålidelig download med genoptagelse og gentagelse
Kombiner -C - (genoptag), --retry (automatisk gentagelse ved fejl) og -L (følg omdirigeringer) for robuste downloads, der overlever netværksafbrydelser.
$ curl -C - --retry 5 --retry-delay 10 -L -o largefile.zip https://cdn.example.com/largefile.zipOfte stillede spørgsmål om download med curl
Hvad er forskellen mellem curl -o og curl -O?
-o filename gemmer downloaden med det nøjagtige filnavn, du angiver. -O udtraekker filnavnet fra URL'en og bruger det. Brug -o når du vil have et brugerdefineret navn eller sti; brug -O når fjernfilnavnet er fint som det er.
Hvorfor downloader curl en tom eller HTML-fil i stedet for den faktiske fil?
URL'en returnerer sandsynligvis en HTTP-omdirigering (301 eller 302). Som standard gemmer curl selve omdirigeringssvaret — ikke det endelige indhold. Tilføj -L for automatisk at følge omdirigeringer: curl -L -o file URL.
Hvordan genoptager jeg en delvist downloadet fil med curl?
Brug curl -C - -o filename URL. Flaget -C - detekterer den eksisterende filstørrelse og sender en Range header for kun at anmode om de resterende bytes. Serveren skal understoette range-anmodninger for at dette virker.
Hvordan begrænser jeg downloadhastigheden i curl?
Brug --limit-rate med en vaerdi og suffiks: curl --limit-rate 500k -o file URL begrænser hastigheden til 500 KB/s. Suffikser: k (KB/s), M (MB/s), G (GB/s).
Kan curl downloade flere filer på en gang?
Ja. Brug flere -O flag: curl -O URL1 -O URL2 -O URL3. curl downloader dem sekventielt. Til parallelle downloads, pipe en URL-liste til xargs -P 4 -I {} curl -O {}.
Hvordan downloader jeg en fil, der kræver autentificering?
Til HTTP Basic Auth: curl -u user:pass -o file URL. Til Bearer-tokens: curl -H "Authorization: Bearer TOKEN" -o file URL. Til API-nøgler i headere: curl -H "X-API-Key: KEY" -o file URL.
Hvordan downloader jeg filer fra en FTP-server med curl?
Brug curl -u user:pass -o localfile ftp://host/path/file. curl understoetter FTP, FTPS (FTP over TLS) og SFTP (SSH FTP) indbygget. Til anonym FTP, udelad -u.
Hvordan downloader jeg store filer pålideligt med curl?
Kombiner -C - (genoptag ved fejl), --retry 5 (automatisk gentagelse), --retry-delay 10 og -L (følg omdirigeringer): curl -C - --retry 5 --retry-delay 10 -L -o file URL. Dette håndterer netværksproblemer automatisk.
Hvordan viser jeg en fremskridtsbjælke ved download med curl?
Brug curl -# -o file URL for en simpel fremskridtsbjælke. Standard curl-output viser allerede overførselshastighed, procent og estimeret tid. Til scripts, brug -s for at undertrykke alt output.
Kan jeg angive en downloadmappe i curl?
Med curl 7.73+, brug --output-dir /path/to/dir kombineret med -O. Til ældre versioner, angiv den fulde sti med -o /path/to/dir/filename. Tilføj --create-dirs hvis mappen ikke eksisterer endnu.
Skal jeg bruge curl eller wget til at downloade filer?
Begge er fremragende. wget er simplere til rekursiv website-mirroring og har indbygget gentagelseslogik. curl understoetter 25+ protokoller (ikke kun HTTP/FTP), er bedre til API-kald og scripting, understoetter flere autentificeringsmetoder og er tilgængelig på praktisk talt alle operativsystemer.
Hvordan bruger jeg curl i et bash-script til at downloade filer?
Brug curl -fsSL -o file URL: -f fejler lydløst ved HTTP-fejl (ingen fejlside gemt), -s lydløs, -S vis fejl selv i lydløs tilstand, -L følg omdirigeringer. Tjek exit-koden: if ! curl -fsSL -o file URL; then echo "Download failed"; exit 1; fi.