Tiedostojen lataaminen curlilla
curl on yksi monipuolisimmista komentorivityökaluista tiedostojen lataamiseen HTTP-, HTTPS-, FTP- ja kymmenien muiden protokollien kautta. Tarvitsetpa sitten tallentaa yksittäisen API-vastauksen tiedostoon tai automatisoida erälatauksia shell-skriptissä, curlilla on lippu sitä varten. Tämä opas kattaa kaikki lataukseen liittyvät vaihtoehdot — perustiedostojen tallennuksesta -o- ja -O-lipuilla keskeytettyjen siirtojen jatkamiseen -C --lipulla, kaistanleveyden rajoittamiseen --limit-rate-lipulla ja edistymispalkkien näyttämiseen. Jokainen lippu sisältää selkeän selityksen, yleiset käyttötavat ja kopiovalmiin esimerkin.
Latauslippujen pikaopas
Kirjoita tuloste nimettyyn tiedostoon stdout:n sijaan
Kirjoita tuloste etätiedoston mukaisella nimellä
Seuraa HTTP 3xx -uudelleenohjauksia automaattisesti
Jatka/aloita uudelleen aiempi tiedostonsiirto
Rajoita siirtonopeus annettuun arvoon
Kieltäydy lataamasta tiedostoja, jotka ylittävät määritetyn koon
Käytä Content-Disposition-otsikkoa tiedoston nimeämiseen
Näytä siirron edistyminen yksinkertaisena edistymispalkkina
Anna käyttäjänimi:salasana palvelimen todennusta varten
Yritä siirtoa uudelleen ohimenevien virheiden yhteydessä (kertojen määrä)
Odota näin monta sekuntia uudelleenyritysten välillä
Lähetä paikallinen tiedosto URL:iin (oletuksena PUT)
Luo paikalliset hakemistot tarvittaessa tallennettaessa tulostetta
Piilota edistymismittari ja virheilmoitukset
Tallenna tulostetiedosto(t) määritettyyn hakemistoon (curl 7.73+)
curl -o: Tallenna tietyllä tiedostonimellä
- Mitä se tekee
-o-lippu (tai--output) käskee curlia tallentamaan vastauksen rungon määrittämääsi tiedostoon. Ilman sitä curl tulostaa vastauksen stdout:iin (päätteeseesi). Voit käyttää mitä tahansa tiedostonimeä ja polkua — curl luo tiedoston tai korvaa olemassa olevan.- Yleinen käyttö
- Käytä
-o-lippua, kun haluat hallita tarkkaa tiedostonimeä tai tallentaa tiettyyn hakemistoon. Se toimii minkä tahansa protokollan kanssa — HTTP, HTTPS, FTP, SFTP ja muut. Yhdistä-L-lippuun uudelleenohjausten käsittelyyn ja-s-lippuun hiljaiseen toimintaan skripteissä.
$ curl -o report.pdf https://example.com/files/report.pdfcurl -O: Tallenna etätiedostonimellä
- Mitä se tekee
-O-lippu (tai--remote-name) tallentaa ladatun tiedoston URL:sta poimitulla tiedostonimellä. Jos URL päättyy esimerkiksi/data.csv, curl luo tiedoston nimeltädata.csvnykyiseen hakemistoon.- Yleinen käyttö
- Käytä
-O-lippua, kun etätiedostonimi on merkityksellinen eikä sinun tarvitse nimetä sitä uudelleen. Voit antaa useita-O-lippuja ladataksesi useita tiedostoja yhdellä komennolla. Huomaa: jos URL ei sisällä tiedostonimeä (esim. päättyy/-merkkiin), curl epäonnistuu — käytä sen sijaan-o-lippua.
$ curl -O https://example.com/files/data.csvcurl -L: Seuraa uudelleenohjauksia
- Mitä se tekee
-L-lippu (tai--location) saa curlin automaattisesti seuraamaan HTTP-uudelleenohjauksia — 301 (Moved Permanently), 302 (Found), 307 ja 308. Ilman-L-lippua curl palauttaa itse uudelleenohjauvastauksen todellisen sisällön sijaan.- Yleinen käyttö
- Useimmat lataus-URL:t uudelleenohjaavat vähintään kerran (esim. HTTP:stä HTTPS:ään tai lyhyestä URL:sta todelliseen tiedostoon). Yhdistä aina
-L-o- tai-O-lippuun tiedostoja ladattaessa. Oletuksena curl seuraa enintään 50 uudelleenohjausta; muuta tätä--max-redirs-lipulla.
$ curl -L -o latest.tar.gz https://github.com/user/repo/releases/latest/download/app.tar.gzcurl -C -: Jatka keskeytyneitä latauksia
- Mitä se tekee
-C --lippu (tai--continue-at -) käskee curlia automaattisesti tunnistamaan olemassa olevan osittaisen tiedoston koon ja jatkamaan latausta siitä kohdasta, johon se jäi. Palvelimen tulee tukea HTTPRange-otsikkoa.- Yleinen käyttö
- Jos suuri lataus keskeytyi verkko-ongelman tai aikakatkaisun vuoksi, suorita sama komento uudelleen lisäämällä
-C -. curl lähettääRange: bytes=OFFSET--otsikon ja lataa vain jäljellä olevan datan. Tämä on välttämätöntä suurille tiedostoille epävakailla yhteyksillä.
$ curl -C - -o largefile.zip https://cdn.example.com/largefile.zipcurl --limit-rate: Rajoita latausnopeutta
- Mitä se tekee
--limit-rate-lippu rajoittaa lataus- (ja lähetys-) nopeuden määritettyyn arvoon. Se hyväksyy päätteet:ktaiKkilotavuiksi/s,mtaiMmegatavuiksi/s,gtaiGgigatavuiksi/s.- Yleinen käyttö
- Käytä
--limit-rate-lippua välttääksesi kaistanleveyden ylikuormittamisen ladattaessa suuria tiedostoja, erityisesti jaetuilla yhteyksillä. Se on hyödyllinen myös testattaessa, miten sovelluksesi käsittelee hitaita vastauksia.
$ curl --limit-rate 1M -o bigfile.iso https://mirror.example.com/bigfile.isocurl --max-filesize: Keskeytä jos tiedosto on liian suuri
- Mitä se tekee
--max-filesize-lippu käskee curlia keskeyttämään siirron, jos odotettu tiedostokoko (Content-Length-otsikon perusteella) ylittää määritetyn rajan. Koko voi käyttää päätteitä kutenk,M,G.- Yleinen käyttö
- Käytä skripteissä estääksesi odottamattoman suurten latausten kuluttamasta levytilaa. Huomaa, että kaikki palvelimet eivät lähetä
Content-Length-otsikkoa — siinä tapauksessa curl ei voi valvoa tätä rajaa ja lataus jatkuu normaalisti.
$ curl --max-filesize 100M -o update.bin https://example.com/update.bincurl -J: Käytä palvelimen ehdottamaa tiedostonimeä
- Mitä se tekee
-J-lippu (tai--remote-header-name) käskee curlia käyttämään palvelimenContent-Disposition-otsikossa määritettyä tiedostonimeä sen sijaan, että se johdettaisiin URL:sta. Tämä on yleistä lataus-API:ille, jotka palauttavat tiedostoja merkityksellisillä nimillä.- Yleinen käyttö
- Yhdistä aina
-J-O-lippuun. Tämä on hyödyllistä, kun URL on API-päätepiste (kuten/export?format=csv), mutta palvelin palauttaa oikean tiedostonimen otsikoissa. Turvallisuushuomautus: palvelin hallitsee tiedostonimeä, joten käytä vain luotettujen palvelimien kanssa.
$ curl -L -O -J https://example.com/api/export?format=csvcurl -#: Näytä edistymispalkki
- Mitä se tekee
-#-lippu (tai--progress-bar) korvaa oletusarvoisen yksityiskohtaisen edistymismittarin yksinkertaisella###-edistymispalkilla. Tämä on helpommin luettava interaktiivisessa käytössä.- Yleinen käyttö
- Käytä
-#-lippua ladattaessa interaktiivisesti ja halutessasi siistin edistymisindikaattorin. Skripteissä suosi-s(hiljainen) tai oletusedistymismittaria. Curlin oletustuloste näyttää jo nopeuden, prosentin, jäljellä olevan ajan ja kokonaiskoon.
$ curl -# -o archive.tar.gz https://example.com/archive.tar.gzLisälatausvaihtoehdot
Anna käyttäjänimi:salasana palvelimen todennusta varten
Yritä siirtoa uudelleen ohimenevien virheiden yhteydessä (kertojen määrä)
Odota näin monta sekuntia uudelleenyritysten välillä
Lähetä paikallinen tiedosto URL:iin (oletuksena PUT)
Luo paikalliset hakemistot tarvittaessa tallennettaessa tulostetta
Piilota edistymismittari ja virheilmoitukset
Tallenna tulostetiedosto(t) määritettyyn hakemistoon (curl 7.73+)
Käytännön latausskenaariot
Nämä esimerkit yhdistävät useita lippuja yleisten lataustehtävien käsittelyyn, joita kohtaat päivittäisessä kehityksessä ja skriptauksessa.
Lataa useita tiedostoja kerralla
Käytä useita -O-lippuja ladataksesi useita tiedostoja yhdellä komennolla. curl käsittelee ne peräkkäin. Rinnakkaisiin latauksiin käytä xargs- tai GNU parallel -komentoa.
$ curl -O https://example.com/file1.txt -O https://example.com/file2.txt -O https://example.com/file3.txtLataa FTP-palvelimelta
curl tukee FTP:tä, FTPS:ää ja SFTP:tä natiivisti. Lisää -u user:password todennettuun pääsyyn. Käytä -O-lippua säilyttääksesi etätiedostonimen.
$ curl -u user:pass -o backup.sql ftp://ftp.example.com/db/backup.sqlLataa todennuksella
Käytä -u user:pass Basic Auth -todennukseen tai -H Bearer-tunnisteen tai API-avaimen välittämiseen. Yhdistä -L- ja -o-lippuihin täydellistä latausta varten.
$ curl -H "Authorization: Bearer eyJhbGciOi..." -L -o data.json https://api.example.com/exportLuotettava lataus jatkamisella ja uudelleenyrityksellä
Yhdistä -C - (jatka), --retry (automaattinen uudelleenyritys epäonnistumisen yhteydessä) ja -L (seuraa uudelleenohjauksia) luotettaviin latauksiin, jotka selviävät verkkokatkoista.
$ curl -C - --retry 5 --retry-delay 10 -L -o largefile.zip https://cdn.example.com/largefile.zipUsein kysytyt kysymykset curlin lataamisesta
Mikä on ero curl -o:n ja curl -O:n välillä?
-o filename tallentaa latauksen määrittämälläsi tarkkalla tiedostonimellä. -O poimii tiedostonimen URL:sta ja käyttää sitä. Käytä -o-lippua, kun haluat mukautetun nimen tai polun; käytä -O-lippua, kun etätiedostonimi on sopiva sellaisenaan.
Miksi curl lataa tyhjän tai HTML-tiedoston todellisen tiedoston sijaan?
URL palauttaa todennäköisesti HTTP-uudelleenohjauksen (301 tai 302). Oletuksena curl tallentaa itse uudelleenohjauvastauksen — ei lopullista sisältöä. Lisää -L seurataksesi uudelleenohjauksia automaattisesti: curl -L -o file URL.
Miten jatkan osittain ladattua tiedostoa curlilla?
Käytä curl -C - -o filename URL. -C --lippu tunnistaa olemassa olevan tiedostokoon ja lähettää Range-otsikon pyytääkseen vain jäljellä olevat tavut. Palvelimen tulee tukea range-pyyntöjä.
Miten rajoitan latausnopeutta curlissa?
Käytä --limit-rate-lippua arvon ja päätteen kanssa: curl --limit-rate 500k -o file URL rajoittaa nopeuden 500 KB/s. Päätteet: k (KB/s), M (MB/s), G (GB/s).
Voiko curl ladata useita tiedostoja kerralla?
Kyllä. Käytä useita -O-lippuja: curl -O URL1 -O URL2 -O URL3. curl lataa ne peräkkäin. Rinnakkaisiin latauksiin ohjaa URL-lista xargs -P 4 -I {} curl -O {} -komentoon.
Miten lataan tiedoston, joka vaatii todennuksen?
HTTP Basic Auth: curl -u user:pass -o file URL. Bearer-tunnisteet: curl -H "Authorization: Bearer TOKEN" -o file URL. API-avaimet otsikoissa: curl -H "X-API-Key: KEY" -o file URL.
Miten lataan tiedostoja FTP-palvelimelta curlilla?
Käytä curl -u user:pass -o localfile ftp://host/path/file. curl tukee FTP:tä, FTPS:ää (FTP over TLS) ja SFTP:tä (SSH FTP) natiivisti. Nimettömään FTP-yhteyteen jätä -u pois.
Miten lataan suuria tiedostoja luotettavasti curlilla?
Yhdistä -C - (jatka epäonnistumisen yhteydessä), --retry 5 (automaattinen uudelleenyritys), --retry-delay 10 ja -L (seuraa uudelleenohjauksia): curl -C - --retry 5 --retry-delay 10 -L -o file URL. Tämä käsittelee verkko-ongelmat automaattisesti.
Miten näytän edistymispalkin curlilla ladattaessa?
Käytä curl -# -o file URL yksinkertaiseen edistymispalkkiin. Curlin oletustuloste näyttää jo siirtonopeuden, prosentin ja arvioidun ajan. Skripteissä käytä -s piilottaaksesi kaiken tulosteen.
Voinko määrittää lataushakemiston curlissa?
Curl 7.73+ -versiolla käytä --output-dir /path/to/dir yhdistettynä -O-lippuun. Vanhemmilla versioilla määritä koko polku -o /path/to/dir/filename -lipulla. Lisää --create-dirs, jos hakemistoa ei vielä ole.
Pitäisikö minun käyttää curlia vai wgetiä tiedostojen lataamiseen?
Molemmat ovat erinomaisia. wget on yksinkertaisempi rekursiiviseen sivuston peilaukseen ja sillä on sisäänrakennettu uudelleenyrityslogiikka. curl tukee yli 25 protokollaa (ei vain HTTP/FTP), on parempi API-kutsuihin ja skriptaukseen, tukee useampia todennusmenetelmiä ja on saatavilla käytännössä jokaisessa käyttöjärjestelmässä.
Miten käytän curlia bash-skriptissä tiedostojen lataamiseen?
Käytä curl -fsSL -o file URL: -f epäonnistuu hiljaisesti HTTP-virheissä (virhesivua ei tallenneta), -s hiljainen, -S näytä virheet myös hiljaisessa tilassa, -L seuraa uudelleenohjauksia. Tarkista paluukoodi: if ! curl -fsSL -o file URL; then echo "Download failed"; exit 1; fi.