Використання 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-revision-515b12-readme.txt» на віддаленому сервері, він збереже під цим ім’ям на локальній машині. Більш довгі імена файлів часто краще обробляти з прапорцем -o, а не -O, про який ми розглянемо незабаром.
Постійні читачі можуть пригадати, що ми використовували команду curl -O, коли пояснювали, як отримати фактичний аудіовміст із потокового файлу m3u.
Початок будь-якого завантаження за допомогою curl показує відсоток переданих даних, час, витрачений на завантаження та час, що залишився, а також швидкість передачі.
Знімок екрана пропонує краще представлення, ніж вставлений приклад нижче, але він виглядає приблизно так:
% Загальний % Отримано % Xferd Середня швидкість Час Час Час Поточне завантаження Завантаження Загальна витрачена залишена швидкість 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, файлів cookie, проксі, тунелів, відновлення завантажень і навіть захоплення інформації заголовка HTTP або зміни агента користувача (фактично підробка) без необхідності використання спеціального веб-браузера.
Як і більшість утиліт командного рядка, ви можете дізнатися набагато більше про curl, викликавши відповідну сторінку довідки за допомогою команди «man curl».