cURL и wget в Linux: в чем разница?
Опубликовано: 2022-07-13 Если вы спросите группу пользователей 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
Файл извлекается и сохраняется на вашем компьютере с исходным именем.
Чтобы сохранить файл с новым именем, используйте параметр -O
(выходной документ).
wget -O word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc
Полученный файл сохраняется с выбранным нами именем.
Не используйте параметр -O
при извлечении веб-сайтов. Если вы это сделаете, все извлеченные файлы будут добавлены в один.
Чтобы получить весь веб-сайт, используйте параметр -m
(зеркало) и URL-адрес домашней страницы веб-сайта. Вы также можете использовать --page-requisites
, чтобы убедиться, что все вспомогательные файлы, необходимые для правильного отображения веб-страниц, также загружены. Параметр --convert-links
настраивает ссылки в извлеченном файле, чтобы они указывали на правильные места назначения на вашем локальном компьютере, а не на внешние места на веб-сайте.
СВЯЗАННЫЕ С: Как использовать wget, лучший инструмент для загрузки из командной строки
Быстрый взгляд на cURL
cURL
— это независимый проект с открытым исходным кодом. Он предустановлен в Manjaro 21 и Fedora 36, но его нужно было установить в Ubuntu 21.04.
Это команда для установки cURL в Ubuntu.
sudo apt установить завиток
Чтобы загрузить тот же файл, что и с помощью wget
, и сохранить его с тем же именем, нам нужно использовать эту команду. Обратите внимание, что опция -o
(вывод) написана строчными буквами с помощью cURL
.
curl -o word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc
Файл скачан для нас. Во время загрузки отображается индикатор выполнения ASCII.
Чтобы подключиться к FTP-серверу и загрузить файл, используйте параметр -u
(пользователь) и укажите пару имени пользователя и пароля, например:
curl -o test.png -u demo:пароль ftp://test.rebex.net/pub/example/KeyGenerator.png
Это загружает и переименовывает файл с тестового FTP-сервера.
СВЯЗАННЫЕ С: Как использовать curl для загрузки файлов из командной строки Linux
Нет лучшего
Невозможно ответить «Какой из них мне использовать», не спросив «Что вы пытаетесь сделать?»
Как только вы поймете, что делают wget
и cURL
, вы поймете, что они не конкурируют друг с другом. Они не удовлетворяют одному и тому же требованию и не пытаются обеспечить одинаковую функциональность.
Загрузка веб-страниц и веб-сайтов — вот в чем заключается превосходство wget
. Если это то, что вы делаете, используйте wget
. Для всего остального — например, для загрузки или использования любого из множества других протоколов — используйте cURL
.