Wget

Wget[6] — (GNU Wget) свободная консольная программа для загрузки файлов по сети. Поддерживает протоколы HTTP, FTP и HTTPS, а также поддерживает работу через HTTP прокси-сервер. Программа включена почти во все дистрибутивы GNU/Linux.

GNU Wget
Логотип программы GNU Wget
Скриншот программы GNU Wget
Тип менеджер загрузок
Автор Hrvoje Nikšić[1]
Разработчики Mauro Tortonesi, Giuseppe Scrivano и др.
Написана на Си[3]
Интерфейс командная строка
Операционные системы Linux и др. UNIX-подобные, Windows
Языки интерфейса русский и ещё 38 языков
Первый выпуск январь 1996
Последняя версия
Репозиторий git.savannah.gnu.org/cgi…
git.savannah.gnu.org/git…
Состояние активное
Лицензия GPL 3.0+[4][5]
Сайт gnu.org/software/wget/
Логотип Викисклада Медиафайлы на Викискладе

Wget является неинтерактивной программой. Это означает, что после её запуска пользователь может повлиять на её работу только с помощью средств управления процессами операционной системы. Как правило, для этого используются сочетания клавиш Ctrl+C при необходимости прерывания работы программы и Ctrl+Z для помещения текущего задания в фон. Современные web-браузеры, как правило, имеют функцию закачки файлов, однако так как браузер рассчитан на интерактивный режим работы, скачивание большого количества файлов вручную может быть утомительным. Браузеры, как правило, не предоставляют средств для автоматизации подобных задач. Wget же, например, поддерживает загрузку URL, указанных в файле. Таким образом можно составить список файлов, а в любое удобное время скачать их с помощью wget. Интерфейс командной строки позволяет управлять wget из других программ и скриптов, что используется при автоматизации загрузки файлов (регулярные обновления, мониторинг доступности сервера и т. д.).

Wget позволяет загружать любые файлы во всемирной паутине (в том числе и (X)HTML-страницы) по протоколам http и https, а также файлы и списки каталогов по протоколу ftp.

Файлы можно скачивать рекурсивно по ссылкам в HTML-страницах, как с одного сайта с определённой глубиной следования по ссылкам, так и с нескольких. Помимо этого, при загрузке по ftp файлы можно скачивать «по маске» имени (то есть можно задавать с помощью «*» группу файлов).

Wget поддерживает докачку файла в случае обрыва соединения.

Ведётся разработка продолжения Wget — Wget2[7].

Примеры править

Загрузка всех URL, указанных в локальном или внешнем ФАЙЛЕ:

wget -i ФАЙЛ

Скачивание файлов в указанный каталог (-P)[8]:

wget -P /path/for/save ftp://ftp.example.org/some_file.iso

Использование имени пользователя и пароля на FTP/HTTP (вариант 1):

wget ftp://login:password@ftp.example.org/some_file.iso

Использование имени пользователя и пароля на FTP/HTTP (вариант 2):

wget --user=login --password=password ftp://ftp.example.org/some_file.iso

Скачивание в фоновом режиме (-b):

wget -b ftp://ftp.example.org/some_file.iso

Продолжить (-c continue) загрузку ранее не полностью загруженного файла:

wget -c http://example.org/file.iso

Скачивание без проверки сертификата (--no-check-certificate):

wget --no-check-certificate http://example.org/file.iso

Скачать содержимое каталога http://example.org/~user/my-archive/ (недоступная ссылка) и всех его подкаталогов, при этом не поднимаясь по иерархии каталогов выше:

wget -r --no-parent http://example.org/~user/my-archive/

Также поддерживается идентификация на сервере:

wget --save-cookies cookies.txt \
--post-data 'user=foo&password=bar' \
http://example.org/auth.php

Скачать весь сайт целиком (глубина рекурсии — 10):

wget -r -l 10 -k -o log-file.txt -p http://example.org/

-r, --recursive включение рекурсивной загрузки
-l, --level=ЧИСЛО глубина рекурсии (inf и 0 - бесконечность)
-k, --convert-links делать ссылки локальными в загруженном HTML или CSS
-o, --output-file=ФАЙЛ записывать сообщения (логи) в ФАЙЛ
-p, --page-requisites загрузить все изображения и проч., необходимые для отображения HTML-страницы
-m, --mirror короткий параметр, эквивалентный -N -r -l inf --no-remove-listing.

Вывести содержание ответа в консоль:

wget http://example.org --quiet -O -

Возвращаемый статус править

До версии 1.12, возвращает 0 при успешном выполнении и 1 в случае ошибки. Начиная с версии 1.12[9], в случае ошибки возвращает от 1 до 8, в зависимости от вида.

Критика править

Разработка Wget идёт медленно, многие новые расширения протоколов HTTP, FTP, сценарии JavaScript и другие функции не поддерживаются.

В некоторых случаях хорошей альтернативой может являться cURL, а для создания зеркал сайтов (чего cURL не умеет[10]) обычно используется rsync. В версии 1.17 и выше обязательна поддержка SSE2-инструкций процессором.

wget2 править

Следующее значительное обновление Wget должно произойти в wget2, который, предположительно, должен прийти ему на смену. wget2 обладает значительным количеством усовершенствований по сравнению с Wget, в первую очередь касающихся производительности:

  • Поддержка HTTP/2
  • HTTP-сжатие
  • Параллельные соединения
  • TCP Fast Open

и рядом других.

Основным разработчиком wget2 является Тим Рюсен (Tim Rühsen), также являющийся одним из основных разработчиков и текущих майнтейнеров Wget.

Клоны править

Для встроенных систем характерен ограниченный размер памяти и для них есть клоны, которые имитируют интерфейс и поведение GNU Wget, но имеют меньше опций, в основном, только скачивание файла:

См. также править

Примечания править

  1. Домашняя страница Wget. Дата обращения: 6 октября 2021. Архивировано 15 сентября 2021 года.
  2. Shah D. wget-1.24.5 released [stable] — 2024.
  3. The wget Open Source Project on Open Hub: Languages Page — 2006.
  4. https://www.gnu.org/software/wget/
  5. https://git.savannah.gnu.org/cgit/wget.git/tree/README
  6. В силу принятых в *nix-системах соглашений в командной строке эта программа вызывается словом, начинающимся со строчной буквы: wget
  7. wget2 on Gitlab Архивная копия от 1 марта 2018 на Wayback Machine (англ.)
  8. Руководство GNU wget. Дата обращения: 6 октября 2021. Архивировано 6 октября 2021 года.
  9. wget manual Архивная копия от 6 октября 2021 на Wayback Machine Возвращаемый статус (en)
  10. cURL FAQ Архивная копия от 6 октября 2021 на Wayback Machine: «Curl is not a web site mirroring program.»

Ссылки править