Нам часто нужно загружать файлы с удаленных серверов на наш локальный компьютер. На графическом рабочем столе мы можем использовать браузер с графическим интерфейсом и нажать кнопку загрузки. Однако на терминале нам нужно использовать инструменты, разработанные для терминала. При загрузке файлов с терминала часто появляются четыре инструмента: curl , axel , wget и aria2. Хотя axel и aria2 могут быть не очень хорошо известны, большинство пользователей терминалов знают curl и wget.
В этой статье мы рассмотрим curl и wget, с чего начать, и, что наиболее важно, различия между ними.
Что такое cURL?
cURL – это бесплатная утилита командной строки с открытым исходным кодом, которая позволяет пользователям передавать данные с одного удаленного компьютера на другой с минимальным вмешательством пользователя или без него. CURL широко используется в таких устройствах, как маршрутизаторы, принтеры, телефоны, планшеты, медиаплееры и т. д.
Он поддерживает загрузку и выгрузку с использованием таких протоколов, как HTTP/HTTPS, FTP, SFTP, SCP, IMAP, LDAP/LDAPS, SMB/SMBS, TELNET, POP3, GOPHER и многие, многие другие.
cURL также предоставляет прокси, возобновление передачи, аутентификацию пользователей, сертификаты SSL и многое другое.
Что такое wget?
GNU Wget, обычно называемый wget, – это бесплатная утилита командной строки для передачи файлов с использованием HTTP/HTTPS, FTP и FTPS. Он предоставляет такие функции, как рекурсивные загрузки, управление пропускной способностью, возобновление прерванных передач, фоновые загрузки, рекурсивные зеркальные файлы и каталоги и многое другое.
Как установить cURL и Wget?
cURL и wget – популярные инструменты, легко доступные в основных дистрибутивах Linux; если у вас не установлен какой-либо инструмент, используйте следующие команды для установки:
Debian/Ubuntu:
# установить cURL sudo apt-get install curl # установить wget sudo apt-get install wget
Arch/Manjaro:
# установить cURL sudo pacman -S curl # установить wget sudo pacman -S wget
REHL/CentOS/Fedora:
# установить cURL sudo yum install curl sudo dnf install curl # установить wget sudo yum install wget sudo dnf install wget
Как использовать cURL и Wget (примеры использования)?
Чтобы убедиться, что вы понимаете сходства и различия между cURL и wget, полезно взглянуть на несколько примеров:
Протоколы HTTP/HTTPS:
И cURL, и wget поддерживают протоколы HTTP и HTTPS. Следовательно, если мы загрузим такой веб-сайт, как andreyex.ru:
curl https://andreyex.ru -o andreyex.html curl https://andreyex.ru -o andreyex.html % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 256k 0 256k 0 0 166k 0 --:--:-- 0:00:01 --:--:-- 166k
По умолчанию cURL будет печатать содержимое веб-ресурса в терминале. Мы используем флаг -o, чтобы перенаправить вывод в файл.
К wget применимо следующее:
https://andreyex.ru --2021-07-23 16:05:09-- https://andreyex.ru/ Resolving andreyex.ru (andreyex.ru)... 213.159.210.167, 172.17.0.1 Connecting to andreyex.ru (andreyex.ru)|213.159.210.167|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index.html' index.html [ <=> ] 135.22K --.-KB/s in 0.001s 2021-07-23 16:05:09 (161 MB/s) - 'index.html' saved [138463]
Wget, с другой стороны, сохраняет запрошенный ресурс в файл.
Приятно отметить, что оба инструмента загружают ресурс. Подробности ls двух файлов показывают оба размера файлов.
$ Ls -l index.html andreyex.html -rw-RW-r-- 1 andreyex andreyex 262396 июля 20 12:23 index.html -rw-RW-r-- 1 andreyex andreyex 262396 июля 23 12:43 andreyex.html
Протокол FTP:
И cURL, и wget поддерживают загрузку по протоколам FTP. Однако cURL поддерживает загрузку на ftp.
Используйте команду ниже для загрузки файлов с FTP-сервера с помощью wget:
wget --user=debian --password=’debian’ ftp://192.168.0.112/backup.zst wget --user=debian --password='debian' ftp://192.168.0.112/backup.zst --2021-06-20 05:29:06-- ftp://192.168.0.112/backup.zst => ‘backup.zst’ Connecting to 192.168.0.112:21... connected. Logging in as debian ... Logged in! ==> SYST ... done. ==> PWD ... done. ==> TYPE I ... done. ==> CWD not needed. ==> SIZE backup.zst ... done. ==> PASV ... done. ==> RETR backup.zst ... done. backup.zst [ <=> ] 0 --.-KB/s in 0s 2021-06-20 05:29:06 (0.00 B/s) - ‘backup.zst’ saved [0] Using curl, add the -u flag as: curl -u debian:debian ‘ftp://192.168.0.112/backup.zst’ -o backup.zst curl -u debian:debian 'ftp://192.168.0.112/backup.zst' -o backup.zst % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 To upload a file to ftp with curl, we use the -T option as: curl -u debian:debian -T “backup1.zst” ftp://192.168.0.112/ftp/
Убедитесь, что каталог существует и у пользователя есть права на запись в него.
Сходства между wget и cURL
А теперь глазурь на торте:
- Оба инструмента поддерживают стандартные протоколы, такие как HTTP, HTTPS, FTP, FTPS.
- Оба инструмента загружают файлы из Интернета.
- Оба инструмента поддерживают файлы cookie HTTP.
- Оба инструмента поддерживают вывод в файл.
- Как бесплатные, так и активно разрабатываемые инструменты.
- Оба инструмента поддерживают переводы резюме.
- Оба инструмента поддерживают HTTP POST.
Различия между wget и cURL
Вот некоторые различия между curl и wget:
- Wget – это простая утилита для передачи, а curl предлагает гораздо больше.
- Curl предоставляет библиотеку libcurl, которую можно расширить до приложений с графическим интерфейсом. С другой стороны, Wget – это простая утилита командной строки.
- Wget поддерживает меньше протоколов по сравнению с cURL.
- Рекурсивные загрузки не поддерживаются в curl.
- Wget изначально доступен в системах Linux, а cURL легко доступен в системах Windows.
- cURL поддерживает множественные параллельные передачи.
- cURL выполняет декомпрессию HTTP с кодировкой передачи, а wget – нет.
- cURL поддерживает двунаправленный HTTP, тогда как wget предлагает простой HTTP POST.
- cURL поддерживает больше методов аутентификации HTTP по сравнению с wget.
- Wget не поддерживает SOCKS.
- Wget требует установленного гнулиба.
- В отличие от curl, в wget по умолчанию включены такие функции, как файлы cookie, отметки времени и последующие перенаправления. cURL требует, чтобы каждый из них был указан явно.
Вывод
В этом руководстве основное внимание уделяется сходству и различию между cURL. Хотя может показаться, что cURL – лучший выбор, есть случаи, когда wget – лучший выбор.
Мой вам совет – выберите то, что вам подходит.