cURL и wget в Linux: в чем разница?

Опубликовано: 2022-07-13
Ноутбук Linux с приглашением bash
Фатмавати Ачмад Заэнури/Shutterstock.com

Если вы спросите группу пользователей Linux, с помощью чего они загружают файлы, некоторые скажут wget , а другие скажут cURL . В чем разница, и один лучше другого?

Все началось с подключения

Правительственные исследователи начали соединять различные сети вместе еще в 1960-х годах, что привело к созданию взаимосвязанных сетей . Но рождение Интернета, каким мы его знаем, произошло 1 января 1983 года, когда был реализован протокол TCP/IP. Это было недостающее звено. Это позволило разрозненным компьютерам и сетям общаться с использованием общего стандарта.

В 1991 году ЦЕРН выпустил свое программное обеспечение для Всемирной паутины, которое они использовали внутри компании в течение нескольких лет. Интерес к этому визуальному наложению для Интернета был немедленным и широко распространенным. К концу 1994 года насчитывалось 10 000 веб-серверов и 10 миллионов пользователей.

Как работает Интернет?
СВЯЗАННЫЕ Как работает Интернет?

Эти две вехи — Интернет и Всемирная паутина — представляют собой очень разные стороны подключения. Но они также имеют много одинаковых функций.

Связь означает именно это. Вы подключаетесь к какому-то удаленному устройству, например серверу. И вы подключаетесь к нему, потому что на нем есть что-то, что вам нужно или вы хотите. Но как получить этот удаленно размещенный ресурс на локальный компьютер из командной строки Linux?

В 1996 году появились две утилиты, позволяющие загружать удаленно размещенные ресурсы. Это wget , выпущенный в январе, и cURL , выпущенный в декабре. Оба они работают в командной строке Linux. Они оба подключаются к удаленным серверам и оба извлекают данные для вас.

Но это не просто обычный случай, когда Linux предоставляет два или более инструмента для выполнения одной и той же работы. Эти утилиты имеют разное назначение и разную специализацию. Проблема в том, что они достаточно похожи, чтобы вызвать путаницу в отношении того, какой из них использовать и когда.

Рассмотрим двух хирургов. Вы, вероятно, не хотите, чтобы глазной хирург делал вам операцию по шунтированию сердца, и при этом вы не хотите, чтобы кардиохирург делал вам операцию по удалению катаракты. Да, они оба высококвалифицированные медицинские работники, но это не значит, что они могут заменить друг друга.

То же самое верно для wget и cURL .

Разные цели, разные функции, некоторые совпадения

«W» в команде wget на ее предназначение. Его основная цель — загрузка веб-страниц или даже целых веб-сайтов. Его man страница описывает его как утилиту для загрузки файлов из Интернета с использованием протоколов HTTP, HTTPS и FTP.

В отличие от этого, cURL работает с 26 протоколами, включая SCP, SFTP и SMSB, а также HTTPS. Его man страница говорит, что это инструмент для передачи данных на сервер или с сервера. Он не предназначен специально для работы с веб-сайтами. Он предназначен для взаимодействия с удаленными серверами с использованием любого из множества поддерживаемых интернет-протоколов.

Таким образом, wget преимущественно ориентирован на веб-сайты, в то время как cURL работает на более глубоком уровне, на уровне обычного интернета.

wget может извлекать веб-страницы и рекурсивно перемещаться по всей структуре каталогов на веб-серверах для загрузки целых веб-сайтов. Он также может настроить ссылки на извлеченных страницах так, чтобы они правильно указывали на веб-страницы на вашем локальном компьютере, а не на их аналоги на удаленном веб-сервере.

cURL позволяет вам взаимодействовать с удаленным сервером. Он может загружать файлы, а также извлекать их. cURL работает с прокси-серверами SOCKS4 и SOCKS5, а HTTPS — с прокси-сервером. Он поддерживает автоматическую распаковку сжатых файлов в форматах GZIP, BROTLI и ZSTD. cURL также позволяет загружать несколько передач параллельно.

Перекрытие между ними заключается в том, что wget и cURL позволяют получать веб-страницы и использовать FTP-серверы.

Это лишь грубая метрика, но вы можете получить некоторое представление об относительных наборах функций двух инструментов, взглянув на объем их man страниц. На нашей тестовой машине справочная страница для wget состоит из 1433 строк. Страница cURL man из колоссальных 5296 строк.

Быстрый взгляд на wget

Поскольку wget является частью проекта GNU, вы должны найти его предустановленным во всех дистрибутивах Linux. Использовать его просто, особенно для наиболее распространенных применений: загрузки веб-страниц или файлов.

Просто используйте команду wget с URL-адресом веб-страницы или удаленного файла.

 wget https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

Загрузка документа Word с помощью wget

Файл извлекается и сохраняется на вашем компьютере с исходным именем.

Вывод команды wget при загрузке документа Word

Чтобы сохранить файл с новым именем, используйте параметр -O (выходной документ).

 wget -O word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

Загрузка файла с помощью wget и сохранение его под новым именем

Полученный файл сохраняется с выбранным нами именем.

Загруженный файл переименовывается в имя, указанное в командной строке.

Не используйте параметр -O при извлечении веб-сайтов. Если вы это сделаете, все извлеченные файлы будут добавлены в один.

Чтобы получить весь веб-сайт, используйте параметр -m (зеркало) и URL-адрес домашней страницы веб-сайта. Вы также можете использовать --page-requisites , чтобы убедиться, что все вспомогательные файлы, необходимые для правильного отображения веб-страниц, также загружены. Параметр --convert-links настраивает ссылки в извлеченном файле, чтобы они указывали на правильные места назначения на вашем локальном компьютере, а не на внешние места на веб-сайте.

СВЯЗАННЫЕ С: Как использовать wget, лучший инструмент для загрузки из командной строки

Быстрый взгляд на cURL

cURL — это независимый проект с открытым исходным кодом. Он предустановлен в Manjaro 21 и Fedora 36, ​​но его нужно было установить в Ubuntu 21.04.

Это команда для установки cURL в Ubuntu.

 sudo apt установить завиток 

Установка cURL в Ubuntu

Чтобы загрузить тот же файл, что и с помощью wget , и сохранить его с тем же именем, нам нужно использовать эту команду. Обратите внимание, что опция -o (вывод) написана строчными буквами с помощью cURL .

 curl -o word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

Загрузка файла с помощью cURL и сохранение его под новым именем

Файл скачан для нас. Во время загрузки отображается индикатор выполнения ASCII.

Файл загружается и сохраняется с именем, указанным в командной строке.

Чтобы подключиться к FTP-серверу и загрузить файл, используйте параметр -u (пользователь) и укажите пару имени пользователя и пароля, например:

 curl -o test.png -u demo:пароль ftp://test.rebex.net/pub/example/KeyGenerator.png 

Загрузка файла с FTP-сервера с помощью cURL

Это загружает и переименовывает файл с тестового FTP-сервера.

Успешная загрузка с FTP-сервера с помощью cURL

СВЯЗАННЫЕ С: Как использовать curl для загрузки файлов из командной строки Linux

Нет лучшего

Невозможно ответить «Какой из них мне использовать», не спросив «Что вы пытаетесь сделать?»

Как только вы поймете, что делают wget и cURL , вы поймете, что они не конкурируют друг с другом. Они не удовлетворяют одному и тому же требованию и не пытаются обеспечить одинаковую функциональность.

Загрузка веб-страниц и веб-сайтов — вот в чем заключается превосходство wget . Если это то, что вы делаете, используйте wget . Для всего остального — например, для загрузки или использования любого из множества других протоколов — используйте cURL .