curl yordamida fayllarni qanday yuklab olish mumkin
curl HTTP, HTTPS, FTP va boshqa ko'p sonli protokollar orqali fayllarni yuklab olish uchun eng ko'p qirrali buyruq qatori vositalaridan biridir. Bitta API javobini faylga saqlash yoki shell skriptida ommaviy yuklashni avtomatlashtirish kerak bo'lsa, curl da buning uchun bayroq mavjud. Ushbu qo'llanma yuklab olishga oid barcha parametrlarni qamrab oladi — -o va -O bilan asosiy faylni saqlashdan -C - bilan uzilgan uzatishlarni davom ettirishgacha, --limit-rate bilan tarmoq kengligini cheklash va progress barlarni ko'rsatish. Har bir bayroq aniq tushuntirish, umumiy foydalanish namunalari va nusxa olishga tayyor misolni o'z ichiga oladi.
Yuklab olish bayroqlari tezkor ma'lumotnomasi
Chiqishni stdout o'rniga nomlangan faylga yozish
Chiqishni masofaviy fayl kabi nomlangan faylga yozish
HTTP 3xx yo'naltirishlarni avtomatik kuzatish
Oldingi fayl uzatishini davom ettirish/qayta boshlash
Uzatish tezligini berilgan qiymatga cheklash
Belgilangan hajmdan katta fayllarni yuklab olishni rad etish
Faylga nom berish uchun Content-Disposition sarlavhasidan foydalanish
Uzatish jarayonini oddiy progress bar sifatida ko'rsatish
Server autentifikatsiyasi uchun foydalanuvchi:parol berish
Vaqtinchalik xatolarda uzatishni qayta urinish (necha marta)
Qayta urinishlar orasida shuncha soniya kutish
Mahalliy faylni URL ga yuklash (sukut bo'yicha PUT)
Chiqishni saqlashda kerak bo'lganda mahalliy papkalarni yaratish
Progress o'lchagich va xato xabarlarini yashirish
Chiqish fayl(lar)ini belgilangan papkaga saqlash (curl 7.73+)
curl -o: Ma'lum fayl nomiga saqlash
- Nima qiladi
-o(yoki--output) bayrog'i curl ga javob tanasini siz belgilagan faylga saqlashni buyuradi. Busiz curl javobni stdout ga (terminalingizga) chiqaradi. Istalgan fayl nomi va yo'ldan foydalanishingiz mumkin — curl faylni yaratadi yoki mavjud faylni qayta yozadi.- Umumiy foydalanish
-odan aniq fayl nomini boshqarish yoki ma'lum papkaga saqlash kerak bo'lganda foydalaning. U istalgan protokol bilan ishlaydi — HTTP, HTTPS, FTP, SFTP va boshqalar. Yo'naltirishlarni boshqarish uchun-Lbilan va skriptlarda jimgina ishlash uchun-sbilan birlashtiring.
$ curl -o report.pdf https://example.com/files/report.pdfcurl -O: Masofaviy fayl nomi bilan saqlash
- Nima qiladi
-O(yoki--remote-name) bayrog'i yuklab olingan faylni URL dan olingan fayl nomi bilan saqlaydi. Masalan, agar URL/data.csvbilan tugasa, curl joriy papkadadata.csvnomli fayl yaratadi.- Umumiy foydalanish
-Odan masofaviy fayl nomi ma'noli bo'lganda va nomini o'zgartirish shart bo'lmaganda foydalaning. Bitta buyruqda bir nechta faylni yuklab olish uchun bir nechta-Obayroqlarini berish mumkin. Eslatma: agar URL da fayl nomi bo'lmasa (masalan,/bilan tugasa), curl xatolik beradi — o'rniga-odan foydalaning.
$ curl -O https://example.com/files/data.csvcurl -L: Yo'naltirishlarni kuzatish
- Nima qiladi
-L(yoki--location) bayrog'i curl ga HTTP yo'naltirishlarni avtomatik kuzatishni buyuradi — 301 (Doimiy ko'chirildi), 302 (Topildi), 307 va 308.-Lsiz curl haqiqiy kontent o'rniga yo'naltirish javobining o'zini qaytaradi.- Umumiy foydalanish
- Yuklab olish URL larining aksariyati kamida bir marta yo'naltiriladi (masalan, HTTP dan HTTPS ga yoki qisqa URL dan haqiqiy faylga). Fayllarni yuklab olishda har doim
-Lni-oyoki-Obilan birlashtiring. Sukut bo'yicha curl 50 tagacha yo'naltirishni kuzatadi; buni--max-redirsbilan o'zgartiring.
$ curl -L -o latest.tar.gz https://github.com/user/repo/releases/latest/download/app.tar.gzcurl -C -: Uzilgan yuklashlarni davom ettirish
- Nima qiladi
-C -(yoki--continue-at -) bayrog'i curl ga mavjud qisman fayl hajmini avtomatik aniqlash va yuklashni to'xtagan joyidan davom ettirishni buyuradi. Bu ishlashi uchun server HTTPRangesarlavhasini qo'llab-quvvatlashi kerak.- Umumiy foydalanish
- Agar katta yuklab olish tarmoq muammosi yoki taymayt tufayli uzilgan bo'lsa, shunchaki o'sha buyruqni
-C -qo'shib qayta ishga tushiring. curlRange: bytes=OFFSET-sarlavhasini yuboradi va faqat qolgan ma'lumotlarni yuklab oladi. Bu ishonchsiz ulanishlar orqali katta fayllar uchun juda muhim.
$ curl -C - -o largefile.zip https://cdn.example.com/largefile.zipcurl --limit-rate: Yuklab olish tezligini cheklash
- Nima qiladi
--limit-ratebayrog'i yuklab olish (va yuklash) tezligini belgilangan qiymatga cheklaydi. U quyidagi qo'shimchalarni qabul qiladi: kilobayt/s uchunkyokiK, megabayt/s uchunmyokiM, gigabayt/s uchungyokiG.- Umumiy foydalanish
- Katta fayllarni yuklab olishda, ayniqsa umumiy ulanishlarda, tarmoq kengligini to'ldirib yubormaslik uchun
--limit-ratedan foydalaning. Bu shuningdek ilovangiz sekin javoblarni qanday boshqarishini sinash uchun foydali.
$ curl --limit-rate 1M -o bigfile.iso https://mirror.example.com/bigfile.isocurl --max-filesize: Fayl juda katta bo'lsa bekor qilish
- Nima qiladi
--max-filesizebayrog'i curl ga kutilgan fayl hajmi (Content-Lengthsarlavhasidan) belgilangan chegaradan oshsa uzatishni bekor qilishni buyuradi. Hajmk,M,Gkabi qo'shimchalarni ishlatishi mumkin.- Umumiy foydalanish
- Kutilmagan katta yuklashlarning disk joyini egallab qo'yishining oldini olish uchun skriptlarda foydalaning. E'tibor bering, barcha serverlar ham
Content-Lengthni yubormaydi — bunday holda curl bu chegarani qo'llay olmaydi va yuklab olish oddiy davom etadi.
$ curl --max-filesize 100M -o update.bin https://example.com/update.bincurl -J: Server taklif qilgan fayl nomidan foydalanish
- Nima qiladi
-J(yoki--remote-header-name) bayrog'i curl ga URL dan olish o'rniga serverningContent-Dispositionsarlavhasida ko'rsatilgan fayl nomidan foydalanishni buyuradi. Bu mazmunli nomlar bilan fayllarni qaytaradigan yuklab olish API lari uchun keng tarqalgan.- Umumiy foydalanish
- Har doim
-Jni-Obilan birlashtiring. Bu URL API endpoint bo'lganda (/export?format=csvkabi) lekin server sarlavhalarda to'g'ri fayl nomini qaytarganda foydali. Xavfsizlik eslatmasi: fayl nomini server boshqaradi, shuning uchun faqat ishonchli serverlar bilan foydalaning.
$ curl -L -O -J https://example.com/api/export?format=csvcurl -#: Progress barni ko'rsatish
- Nima qiladi
-#(yoki--progress-bar) bayrog'i standart batafsil progress o'lchagichni oddiy###progress bar bilan almashtiradi. Bu interaktiv foydalanish uchun o'qish osonroq.- Umumiy foydalanish
- Interaktiv yuklab olishda toza progress ko'rsatkichini xohlasangiz
-#dan foydalaning. Skriptlar uchun-s(jim) yoki standart progress o'lchagichni afzal ko'ring. Standart curl chiqishi allaqachon tezlik, foiz, qolgan vaqt va umumiy hajmni ko'rsatadi.
$ curl -# -o archive.tar.gz https://example.com/archive.tar.gzQo'shimcha yuklab olish parametrlari
Server autentifikatsiyasi uchun foydalanuvchi:parol berish
Vaqtinchalik xatolarda uzatishni qayta urinish (necha marta)
Qayta urinishlar orasida shuncha soniya kutish
Mahalliy faylni URL ga yuklash (sukut bo'yicha PUT)
Chiqishni saqlashda kerak bo'lganda mahalliy papkalarni yaratish
Progress o'lchagich va xato xabarlarini yashirish
Chiqish fayl(lar)ini belgilangan papkaga saqlash (curl 7.73+)
Haqiqiy yuklab olish senariylari
Ushbu misollar kundalik dasturlash va skript yozishda duch keladigan keng tarqalgan yuklab olish vazifalarini bajarish uchun bir nechta bayroqlarni birlashtiradi.
Bir vaqtda bir nechta faylni yuklab olish
Bitta buyruqda bir nechta faylni yuklab olish uchun bir nechta -O bayroqlaridan foydalaning. curl ularni ketma-ket qayta ishlaydi. Parallel yuklab olish uchun xargs yoki GNU parallel dan foydalaning.
$ curl -O https://example.com/file1.txt -O https://example.com/file2.txt -O https://example.com/file3.txtFTP serveridan yuklab olish
curl FTP, FTPS va SFTP ni qo'llab-quvvatlaydi. Autentifikatsiya qilingan kirish uchun -u user:password qo'shing. Masofaviy fayl nomini saqlash uchun -O dan foydalaning.
$ curl -u user:pass -o backup.sql ftp://ftp.example.com/db/backup.sqlAutentifikatsiya bilan yuklab olish
Basic Auth uchun -u user:pass dan yoki Bearer token yoki API kalitini uzatish uchun -H dan foydalaning. To'liq yuklab olish uchun -L va -o bilan birlashtiring.
$ curl -H "Authorization: Bearer eyJhbGciOi..." -L -o data.json https://api.example.com/exportDavom ettirish va qayta urinish bilan ishonchli yuklab olish
Tarmoq uzilishlaridan omon qoladigan mustahkam yuklab olish uchun -C - (davom ettirish), --retry (muvaffaqiyatsizlikda avtomatik qayta urinish) va -L (yo'naltirishlarni kuzatish) ni birlashtiring.
$ curl -C - --retry 5 --retry-delay 10 -L -o largefile.zip https://cdn.example.com/largefile.zipcurl bilan yuklab olish haqida tez-tez so'raladigan savollar
curl -o va curl -O o'rtasidagi farq nima?
-o filename yuklashni siz belgilagan aniq fayl nomiga saqlaydi. -O fayl nomini URL dan oladi va undan foydalanadi. Maxsus nom yoki yo'l kerak bo'lganda -o dan foydalaning; masofaviy fayl nomi mos bo'lganda -O dan foydalaning.
Nega curl haqiqiy fayl o'rniga bo'sh yoki HTML faylni yuklab oladi?
URL ehtimol HTTP yo'naltirish (301 yoki 302) qaytaradi. Sukut bo'yicha curl yakuniy kontent o'rniga yo'naltirish javobining o'zini saqlaydi. Yo'naltirishlarni avtomatik kuzatish uchun -L qo'shing: curl -L -o file URL.
curl bilan qisman yuklab olingan faylni qanday davom ettirish mumkin?
curl -C - -o filename URL dan foydalaning. -C - bayrog'i mavjud fayl hajmini aniqlaydi va faqat qolgan baytlarni so'rash uchun Range sarlavhasini yuboradi. Bu ishlashi uchun server range so'rovlarini qo'llab-quvvatlashi kerak.
curl da yuklab olish tezligini qanday cheklash mumkin?
--limit-rate ni qiymat va qo'shimcha bilan foydalaning: curl --limit-rate 500k -o file URL tezlikni 500 KB/s ga cheklaydi. Qo'shimchalar: k (KB/s), M (MB/s), G (GB/s).
curl bir vaqtda bir nechta faylni yuklab olishi mumkinmi?
Ha. Bir nechta -O bayroqlaridan foydalaning: curl -O URL1 -O URL2 -O URL3. curl ularni ketma-ket yuklab oladi. Parallel yuklab olish uchun URL ro'yxatini xargs -P 4 -I {} curl -O {} ga yo'naltiring.
Autentifikatsiya talab qiladigan faylni qanday yuklab olish mumkin?
HTTP Basic Auth uchun: curl -u user:pass -o file URL. Bearer tokenlari uchun: curl -H "Authorization: Bearer TOKEN" -o file URL. Sarlavhalardagi API kalitlari uchun: curl -H "X-API-Key: KEY" -o file URL.
curl bilan FTP serveridan fayllarni qanday yuklab olish mumkin?
curl -u user:pass -o localfile ftp://host/path/file dan foydalaning. curl FTP, FTPS (TLS orqali FTP) va SFTP (SSH FTP) ni qo'llab-quvvatlaydi. Anonim FTP uchun -u ni tushirib qoldiring.
Katta fayllarni curl bilan ishonchli qanday yuklab olish mumkin?
-C - (muvaffaqiyatsizlikda davom ettirish), --retry 5 (avtomatik qayta urinish), --retry-delay 10 va -L (yo'naltirishlarni kuzatish) ni birlashtiring: curl -C - --retry 5 --retry-delay 10 -L -o file URL. Bu tarmoq muammolarini avtomatik hal qiladi.
curl bilan yuklab olishda progress barni qanday ko'rsatish mumkin?
Oddiy progress bar uchun curl -# -o file URL dan foydalaning. Standart curl chiqishi allaqachon uzatish tezligi, foiz va taxminiy vaqtni ko'rsatadi. Skriptlar uchun barcha chiqishni yashirish uchun -s dan foydalaning.
curl da yuklab olish papkasini belgilash mumkinmi?
curl 7.73+ bilan --output-dir /path/to/dir ni -O bilan birlashtiring. Eski versiyalar uchun -o /path/to/dir/filename bilan to'liq yo'lni belgilang. Agar papka mavjud bo'lmasa --create-dirs qo'shing.
Fayllarni yuklab olish uchun curl yoki wget ishlatish kerakmi?
Ikkalasi ham ajoyib. wget rekursiv veb-saytlarni ko'chirish uchun oddiyroq va o'rnatilgan qayta urinish mantiqiga ega. curl 25+ protokolni qo'llab-quvvatlaydi (faqat HTTP/FTP emas), API chaqiruvlari va skript yozish uchun yaxshiroq, ko'proq autentifikatsiya usullarini qo'llab-quvvatlaydi va deyarli har bir operatsion tizimda mavjud.
Fayllarni yuklab olish uchun bash skriptida curl dan qanday foydalanish mumkin?
curl -fsSL -o file URL dan foydalaning: -f HTTP xatolarida jimgina muvaffaqiyatsiz bo'ladi (xato sahifasi saqlanmaydi), -s jim, -S jim rejimda ham xatolarni ko'rsatadi, -L yo'naltirishlarni kuzatadi. Chiqish kodini tekshiring: if ! curl -fsSL -o file URL; then echo "Yuklab olish muvaffaqiyatsiz"; exit 1; fi.