Использование cURL для загрузки удаленных файлов из командной строки
Оглавление:
- Загрузить файлы точного соответствия с помощью curl -O
- Сохранение удаленного файла с другим именем с помощью curl -o
- Одновременная загрузка нескольких файлов с помощью curl
Мощный инструмент командной строки curl можно использовать для загрузки файлов практически с любого удаленного сервера. Давние пользователи командной строки знают, что это может быть полезно в самых разных ситуациях, но для простоты многие обнаружат, что загрузка файла с помощью curl часто может быть более быстрой альтернативой использованию веб-браузера или FTP-клиента со стороны графического интерфейса. 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-информация.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
Например, если вы хотите сохранить IPSW-файл iOS, который вы нашли в списке на серверах 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».