curl арқылы файлдарды қалай жүктеуге болады
curl — HTTP, HTTPS, FTP және ондаған басқа хаттамалар арқылы файлдарды жүктеуге арналған ең әмбебап командалық жол құралдарының бірі. Бір API жауабын файлға сақтау немесе shell сценарийінде пакеттік жүктеулерді автоматтандыру қажет болса да, curl-да бұл үшін жалауша бар. Бұл нұсқаулық жүктеуге қатысты барлық опцияларды қамтиды — -o және -O арқылы негізгі файлды сақтаудан, -C - арқылы үзілген тасымалдауларды жалғастыруға, --limit-rate арқылы өткізу қабілетін шектеуге және прогресс жолағын көрсетуге дейін. Әр жалауша нақты түсіндірмені, жиі қолданылатын үлгілерді және көшіруге дайын мысалды қамтиды.
Жүктеу жалаушаларының жылдам анықтамалығы
stdout орнына көрсетілген файлға шығысты жазу
Қашықтағы файл атауы сияқты файлға шығысты жазу
HTTP 3xx бағыттауларын автоматты түрде орындау
Алдыңғы файл тасымалдауын жалғастыру/қайта бастау
Тасымалдау жылдамдығын берілген шамаға дейін шектеу
Көрсетілген өлшемнен үлкен файлдарды жүктеуден бас тарту
Файлды атау үшін Content-Disposition тақырыбын қолдану
Тасымалдау прогресін қарапайым прогресс жолағы ретінде көрсету
Сервер аутентификациясы үшін username:password беру
Уақытша қателерде тасымалдауды қайталау (рет саны)
Қайталаулар арасында осынша секунд күту
Жергілікті файлды URL-ге жүктеп салу (әдепкі бойынша PUT)
Шығысты сақтау кезінде қажетті жергілікті каталогтарды жасау
Прогресс есептегіші мен қате хабарламаларын басу
Шығыс файл(дар)ды көрсетілген каталогқа сақтау (curl 7.73+)
curl -o: белгілі файл атауымен сақтау
- Не істейді
-o(немесе--output) жалаушасы curl-ға жауап денесін сіз көрсеткен файлға сақтауды нұсқайды. Ол болмаса, curl жауапты stdout-қа (терминалыңызға) басып шығарады. Кез келген файл атауы мен жолды қолдануға болады — curl файлды жасайды немесе бар файлды қайта жазады.- Жиі қолданылуы
-oфайл атауын нақты басқару немесе белгілі каталогқа сақтау қажет болғанда қолданыңыз. Кез келген хаттамамен жұмыс істейді — HTTP, HTTPS, FTP, SFTP және т.б. Бағыттауларды өңдеу үшін-L-мен, сценарийлердегі үнсіз жұмыс үшін-s-пен біріктіріңіз.
$ curl -o report.pdf https://example.com/files/report.pdfcurl -O: қашықтағы файл атауымен сақтау
- Не істейді
-O(немесе--remote-name) жалаушасы жүктелген файлды URL-ден алынған файл атауын қолданып сақтайды. Мысалы, егер URL/data.csv-мен аяқталса, curl ағымдағы каталогтаdata.csvдеген файл жасайды.- Жиі қолданылуы
-Oқашықтағы файл атауы мағыналы болып, оны қайта атау қажет болмағанда қолданыңыз. Бір бұйрықта бірнеше файл жүктеу үшін бірнеше-Oжалаушасын беруге болады. Ескерту: URL файл атауын қамтымаса (мысалы,/-мен аяқталса), curl сәтсіз болады — оның орнына-oқолданыңыз.
$ curl -O https://example.com/files/data.csvcurl -L: бағыттауларды орындау
- Не істейді
-L(немесе--location) жалаушасы curl-ды HTTP бағыттауларын автоматты түрде орындайды — 301 (Moved Permanently), 302 (Found), 307 және 308.-Lболмаса, curl нақты мазмұнның орнына бағыттау жауабының өзін қайтарады.- Жиі қолданылуы
- Жүктеу URL-дерінің көпшілігі кемінде бір рет бағыттауға ұшырайды (мысалы, HTTP-ден HTTPS-ке, немесе қысқа URL-ден нақты файлға). Файлдарды жүктегенде әрқашан
-L-ді-oнемесе-O-мен біріктіріңіз. Әдепкі бойынша curl 50-ге дейін бағыттауды орындайды;--max-redirs-пен өзгертіңіз.
$ curl -L -o latest.tar.gz https://github.com/user/repo/releases/latest/download/app.tar.gzcurl -C -: үзілген жүктеуді жалғастыру
- Не істейді
-C -(немесе--continue-at -) жалаушасы curl-ға бар ішінара файлдың өлшемін автоматты түрде анықтап, тоқтаған жерінен жүктеуді жалғастыруды нұсқайды. Бұл жұмыс істеу үшін сервер HTTPRangeтақырыбын қолдауы керек.- Жиі қолданылуы
- Егер үлкен жүктеу желі мәселесі немесе таймаут арқылы үзілсе, жай ғана
-C -қосылған сол бұйрықты қайта іске қосыңыз. curlRange: bytes=OFFSET-тақырыбын жібереді және тек қалған деректерді жүктейді. Сенімсіз қосылымдардағы үлкен файлдар үшін маңызды.
$ curl -C - -o largefile.zip https://cdn.example.com/largefile.zipcurl --limit-rate: жүктеу жылдамдығын шектеу
- Не істейді
--limit-rateжалаушасы жүктеу (және жүктеп салу) жылдамдығын көрсетілген шамаға дейін шектейді. Жұрнақтарды қабылдайды:kнемесеKкилобайт/с,mнемесеMмегабайт/с,gнемесеGгигабайт/с.- Жиі қолданылуы
- Үлкен файлдарды жүктегенде, әсіресе ортақ қосылымдарда, өткізу қабілетін толтырмау үшін
--limit-rateқолданыңыз. Қолданбаңыздың баяу жауаптарды қалай өңдейтінін тексеру үшін де пайдалы.
$ curl --limit-rate 1M -o bigfile.iso https://mirror.example.com/bigfile.isocurl --max-filesize: файл тым үлкен болса тоқтату
- Не істейді
--max-filesizeжалаушасы curl-ға күтілетін файл өлшемі (Content-Lengthтақырыбынан) көрсетілген шектен асса тасымалдауды тоқтатуды нұсқайды. Өлшемk,M,Gсияқты жұрнақтарды қолдана алады.- Жиі қолданылуы
- Сценарийлерде күтпеген үлкен жүктеулердің диск кеңістігін тұтынуын болдырмау үшін қолданыңыз. Барлық серверлер
Content-Lengthжібере бермейді — бұл жағдайда curl бұл шектеуді қолдана алмайды және жүктеу қалыпты жалғасады.
$ curl --max-filesize 100M -o update.bin https://example.com/update.bincurl -J: сервер ұсынған файл атауын қолдану
- Не істейді
-J(немесе--remote-header-name) жалаушасы curl-ға URL-ден шығарудың орнына сервердіңContent-Dispositionтақырыбында көрсетілген файл атауын қолдануды нұсқайды. Бұл мағыналы атаулармен файлдарды қайтаратын жүктеу API-лері үшін жиі кездеседі.- Жиі қолданылуы
-J-ні әрқашан-O-мен біріктіріңіз. URL API нүктесі болғанда (/export?format=csvсияқты), бірақ сервер тақырыптарда дұрыс файл атауын қайтарғанда пайдалы. Қауіпсіздік ескертуі: файл атауын сервер басқарады, сондықтан тек сенімді серверлермен қолданыңыз.
$ curl -L -O -J https://example.com/api/export?format=csvcurl -#: прогресс жолағын көрсету
- Не істейді
-#(немесе--progress-bar) жалаушасы әдепкі толық прогресс есептегішін қарапайым###прогресс жолағымен ауыстырады. Бұл интерактивті қолдану үшін оқуға оңай.- Жиі қолданылуы
- Интерактивті жүктеу кезінде таза прогресс көрсеткіші қажет болғанда
-#қолданыңыз. Сценарийлер үшін-s(үнсіз) немесе әдепкі прогресс есептегішін таңдаңыз. curl-дың әдепкі шығысы жылдамдықты, пайызды, қалған уақытты және жалпы өлшемді көрсетеді.
$ curl -# -o archive.tar.gz https://example.com/archive.tar.gzҚосымша жүктеу опциялары
Сервер аутентификациясы үшін username:password беру
Уақытша қателерде тасымалдауды қайталау (рет саны)
Қайталаулар арасында осынша секунд күту
Жергілікті файлды URL-ге жүктеп салу (әдепкі бойынша PUT)
Шығысты сақтау кезінде қажетті жергілікті каталогтарды жасау
Прогресс есептегіші мен қате хабарламаларын басу
Шығыс файл(дар)ды көрсетілген каталогқа сақтау (curl 7.73+)
Нақты жүктеу сценарийлері
Бұл мысалдар күнделікті әзірлеу мен сценарий жазуда кездесетін жиі жүктеу тапсырмаларын орындау үшін бірнеше жалаушаны біріктіреді.
Бірнеше файлды бірден жүктеу
Бір бұйрықта бірнеше файл жүктеу үшін бірнеше -O жалаушасын қолданыңыз. curl оларды кезекпен өңдейді. Параллель жүктеу үшін xargs немесе GNU parallel қолданыңыз.
$ curl -O https://example.com/file1.txt -O https://example.com/file2.txt -O https://example.com/file3.txtFTP серверінен жүктеу
curl FTP, FTPS және SFTP-ні өзі қолдайды. Аутентификацияланған кіру үшін -u user:password қосыңыз. Қашықтағы файл атауын сақтау үшін -O қолданыңыз.
$ curl -u user:pass -o backup.sql ftp://ftp.example.com/db/backup.sqlАутентификациямен жүктеу
Basic Auth үшін -u user:pass қолданыңыз, немесе Bearer токені немесе API кілтін беру үшін -H қолданыңыз. Толық жүктеу үшін -L және -o біріктіріңіз.
$ curl -H "Authorization: Bearer eyJhbGciOi..." -L -o data.json https://api.example.com/exportЖалғастыру мен қайталаумен сенімді жүктеу
Желі үзілістеріне төтеп беретін берік жүктеу үшін -C - (жалғастыру), --retry (сәтсіздік кезінде автоматты қайталау) және -L (бағыттауларды орындау) біріктіріңіз.
$ curl -C - --retry 5 --retry-delay 10 -L -o largefile.zip https://cdn.example.com/largefile.zipcurl арқылы жүктеу туралы жиі қойылатын сұрақтар
curl -o мен curl -O арасындағы айырмашылық неде?
-o filename жүктеуді сіз көрсеткен нақты файл атауына сақтайды. -O URL-ден файл атауын алып, оны қолданады. Реттелетін атау немесе жол қажет болғанда -o қолданыңыз; қашықтағы файл атауы қолайлы болса -O қолданыңыз.
Неліктен curl нақты файлдың орнына бос немесе HTML файл жүктейді?
URL HTTP бағыттауын (301 немесе 302) қайтаруы мүмкін. Әдепкі бойынша curl соңғы мазмұнды емес — бағыттау жауабының өзін сақтайды. Бағыттауларды автоматты түрде орындау үшін -L қосыңыз: curl -L -o file URL.
curl-мен ішінара жүктелген файлды қалай жалғастыруға болады?
curl -C - -o filename URL қолданыңыз. -C - жалаушасы бар файл өлшемін анықтап, тек қалған байттарды сұрау үшін Range тақырыбын жібереді. Бұл жұмыс істеу үшін сервер range сұрауларын қолдауы керек.
curl-да жүктеу жылдамдығын қалай шектеуге болады?
--limit-rate мәнмен және жұрнақпен қолданыңыз: curl --limit-rate 500k -o file URL жылдамдықты 500 КБ/с-ға дейін шектейді. Жұрнақтар: k (КБ/с), M (МБ/с), G (ГБ/с).
curl бірнеше файлды бірден жүктей ала ма?
Иә. Бірнеше -O жалаушасын қолданыңыз: curl -O URL1 -O URL2 -O URL3. curl оларды кезекпен жүктейді. Параллель жүктеу үшін URL тізімін xargs -P 4 -I {} curl -O {}-ге жіберіңіз.
Аутентификация қажет файлды қалай жүктеуге болады?
HTTP Basic Auth: curl -u user:pass -o file URL. Bearer токендері: curl -H "Authorization: Bearer TOKEN" -o file URL. Тақырыптардағы API кілттері: curl -H "X-API-Key: KEY" -o file URL.
curl-мен FTP серверінен файлдарды қалай жүктеуге болады?
curl -u user:pass -o localfile ftp://host/path/file қолданыңыз. curl FTP, FTPS (FTP over TLS) және SFTP (SSH FTP) өзі қолдайды. Анонимді FTP үшін -u қалдырыңыз.
curl-мен үлкен файлдарды сенімді қалай жүктеуге болады?
-C - (сәтсіздік кезінде жалғастыру), --retry 5 (автоматты қайталау), --retry-delay 10 және -L (бағыттауларды орындау) біріктіріңіз: curl -C - --retry 5 --retry-delay 10 -L -o file URL. Бұл желі ақауларын автоматты түрде өңдейді.
curl-мен жүктеу кезінде прогресс жолағын қалай көрсетуге болады?
Қарапайым прогресс жолағы үшін curl -# -o file URL қолданыңыз. curl-дың әдепкі шығысы тасымалдау жылдамдығын, пайызды және болжамды уақытты көрсетеді. Сценарийлер үшін барлық шығысты басу үшін -s қолданыңыз.
curl-да жүктеу каталогын көрсетуге бола ма?
curl 7.73+ нұсқасында --output-dir /path/to/dir -O-мен біріктіріп қолданыңыз. Ескі нұсқалар үшін -o /path/to/dir/filename-мен толық жолды көрсетіңіз. Каталог жоқ болса --create-dirs қосыңыз.
Файлдарды жүктеу үшін curl немесе wget қолдану керек пе?
Екеуі де тамаша. wget рекурсивті веб-сайт көшіру үшін қарапайым және кіріктірілген қайталау логикасы бар. curl 25+ хаттаманы қолдайды (тек HTTP/FTP емес), API шақырулары мен сценарийлер үшін жақсырақ, көбірек аутентификация әдістерін қолдайды және іс жүзінде барлық операциялық жүйеде қол жетімді.
Файлдарды жүктеу үшін bash сценарийінде curl-ды қалай қолдануға болады?
curl -fsSL -o file URL қолданыңыз: -f HTTP қателерінде үнсіз сәтсіз болады (қате беті сақталмайды), -s үнсіз, -S үнсіз режимде де қателерді көрсету, -L бағыттауларды орындау. Шығу кодын тексеріңіз: if ! curl -fsSL -o file URL; then echo "Download failed"; exit 1; fi.