Използване на cURL за изтегляне на отдалечени файлове от командния ред
Съдържание:
- Изтегляне на файлове с точно съвпадение с curl -O
- Запазване на отдалечен файл с различно име с curl -o
- Изтегляне на множество файлове едновременно с curl
Мощният инструмент за команден ред curl може да се използва за изтегляне на файлове от почти всеки отдалечен сървър. Дългогодишните потребители на командния ред знаят, че това може да бъде полезно за голямо разнообразие от ситуации, но за да опростим нещата, мнозина ще открият, че изтеглянето на файл с curl често може да бъде по-бърза алтернатива на използването на уеб браузър или FTP клиент от страна на GUI на Mac OS X (или linux).Това е полезно за локални ситуации, но има особена стойност, ако сте в ситуация, в която трябва да изтеглите нещо на отдалечен Mac, когато сте свързани чрез SSH.
За целите на това ръководство ще се съсредоточим основно върху изтеглянето на файлове от двата често срещани HTTP и SFTP протокола, въпреки че трябва да се отбележи, че cURL поддържа много повече протоколи. Въпреки че curl е лесен за използване, препоръчително е да имате известни познания за командния ред.
Изтегляне на файлове с точно съвпадение с curl -O
Използването на флага с главни букви -O с curl изтегля файла от отдалечения сървър, като запазва точното име на файла, основният синтаксис за това е следният:
curl -O
Това означава, че ако посоченият URL файл е наречен „sample.zip“, той ще се изтегли с името на файла „sample.zip“, а ако файлът е наречен нещо огромно и сложно като „LongExampleFileNameForOSXDaily-v- 1-3-51-ревизия-515b12-readme.txt” на отдалечения сървър, той ще запише с точното име на локалната машина. По-дългите имена на файлове често се обработват по-добре с флага -o, отколкото с -O, който ще разгледаме скоро.
Редовните читатели може би си спомнят, че използвахме командата curl -O, когато обяснявахме как да извлечем действителното аудио съдържание от m3u поточно предаван файл.
Започването на всяко изтегляне с curl показва прехвърления процент, времето, прекарано в изтегляне и оставащото време, както и скоростта на прехвърляне.
Екранната снимка предлага по-добро представяне от поставения пример по-долу, но изглежда по следния начин:
% Общо % Получени % Xferd Средна скорост Време Време Време Текущо Dload Качване Общо изразходвано Останала скорост 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k
С показване на скоростта на трансфер можете да пренасочите изхода на curl към /dev/null и да го използвате за тестване на скоростта на интернет връзката, но командата wget има по-лесна за четене и следване лента за трансфер, така че wget е по-добър подходящ за тази задача.
Запазване на отдалечен файл с различно име с curl -o
Използването на флаг с малки букви -o ще ви позволи да зададете име на изтегления файл, различно от начина, по който е именуван на отдалечения сървър. Това може да бъде полезно за намаляване на дългите имена на файлове или просто за етикетиране на нещо, така че да е по-лесно да го намерите сами. Общият синтаксис ще бъде:
curl -o
Например, ако искате да запишете iOS IPSW файл, който сте намерили в списъка на сървърите на Apple, без да имате дългото пълно име, можете да използвате следното:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw
Това ще изтегли файла „iPhone5, 3_7.0.4_11B554a_Restore.ipsw“, но наречен по-кратък като по-смисленото „iPhone5C-704.ipsw“.
Ако предпочитате да не записвате файла в настоящата работна директория, посочете път като част от името на файла, така:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Изтегляне на множество файлове едновременно с curl
cURL може лесно да изтегля няколко файла едновременно, всичко, което трябва да направите, е да посочите повече от един URL, така:
curl -O
За файлове с различни имена, или хоствани на различни сървъри, или в различни пътища на директория, използвайте пълния URL адрес, например:
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
От друга страна, ако имената на файловете за изтегляне използват постепенно наименуване, можете да използвате скоби, за да посочите диапазон на изтегляне, така:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
Това ще грабне файловете fdl-1.1.txt, fd1-1.2.txt и fd1-1.3.txt едновременно, без да се налага да посочвате всеки уникален URL. Разбира се, това работи само ако файловете са в една и съща директория заедно и в един и същ домейн.
Удостоверяване с curl
Можете също да преминете удостоверяване с cURL, като използвате флага -u:
curl -u user:pass -O ftp://remote_url/file-to-download.zip
Имайте предвид, че хронологията на bash ще съхрани паролата в обикновен текст, когато използвате -u със зададени потребителско име и парола, поради което това не се препоръчва за повечето ситуации. Можете да заобиколите това, като поставите интервал пред „curl“.Ако не използвате интервала за префикс на командата, вероятно ще искате да изчистите хронологията на командите след това, за да сте в безопасност.
Поддържани curl протоколи и използване извън HTTP и FTP
Както бе споменато по-рано, използването на cURL надхвърля HTTP и FTP, тъй като въвеждането на страницата с ръководство за curl споменава допълнителни протоколи в описанието:
Освен това, ще откриете, че curl може да се използва и за PUT и POST заявки, бисквитки, прокси сървъри, тунели, възобновяване на изтегляния и дори прихващане на информация за HTTP хедър или промяна на потребителски агент (ефективно подправяне) без да е необходимо да използвате специален уеб браузър.
Както повечето помощни програми от командния ред, можете да научите много повече за curl, като извикате съответната страница с ръководство с командата 'man curl'.