Не для кого не секрет, что Linux без интернета ничто. Но кроме инсталяшек пакетов и их обновлений нередко необходимо уметь выполнять просто закачки файлов.
Для для выполнения закачек из Интернет по протоколам HTTP или FTP в Linux существует специализированная утилита - wget. Она управляется из командной оболочки, имеет простой синтаксис, а также богатый функционал, позволяющий гибко выполнять закачки в самых различных ситуациях. В подавляющем большинстве дистрибутивов Linux wget изначально предустановлена в системе.
Утилита wget обладает рядом особенностей, делающих её самым эффективным и популярным инструментом для организации загрузок, в особенности среди системных администраторов:
- утилита является стандартным инструментом для дистрибутивов на базе Не нужно предварительно ничего устанавливать, настраивать или компилировать (если, конечно не нужно использовать самую актуальную версию wget), достаточно просто начать использование;
- wget поддерживает работу в фоновом режиме;
- утилита самостоятельно контролирует соединения и поэтому способна осуществлять докачку при потере соединений или плохой связи;
- поддержка рекурсивного режима работы wget позволяет автоматически выполнять закачки из множества ресурсов, например, закачивая несколько HTML-страниц или поддиректорий с FTP-сервера.
Утилита wget обладает очень богатым функционалом, который полностью описан на официальных страницах технической документации, доступной по команде man wget. Также можно воспользоваться опцией —help для получения списка поддерживаемых ключей и их описания. В большинстве случаев опция —help предоставляет описание на языке, соответствующем текущей локализации системы.
Опции
-V (—version) — вывести версию программы
-h (—help) — вывести справку
-b (—background) — работать в фоновом режиме
-o файл (—out-file) — указать лог файл
-d (—debug) — включить режим отладки
-v (—verbose) — выводить максимум информации о работе утилиты
-q (—quiet) — выводить минимум информации о работе
-i файл (—input-file) — прочитать URL из файла
—force-html — читать файл указанный в предыдущем параметре как html
-t (—tries) — количество попыток подключения к серверу
-O файл (—output-document) — файл в который будут сохранены полученные данные
-с (—continue) — продолжить ранее прерванную загрузку
-S (—server-response) — вывести ответ сервера
—spider — проверить работоспособность URL
-T время (—timeout) — таймаут подключения к серверу
—limit-rate — ограничить скорость загрузки
-w (—wait) — интервал между запросами
-Q (—quota) — максимальный размер загрузки
-4 (—inet4only) — использовать протокол ipv4
-6 (—inet6only) — использовать протокол ipv6
-U (—user-agent)— строка USER AGENT отправляемая серверу
-r (—recursive)- рекурсивная работа утилиты
-l (—level) — глубина при рекурсивном сканировании
-k (—convert-links) — конвертировать ссылки в локальные при загрузке страниц
-P (—directory-prefix) — каталог, в который будут загружаться файлы
-m (—mirror) — скачать сайт на локальную машину
-p (—page-requisites) — во время загрузки сайта скачивать все необходимые ресурсы
wget в примерах
Как уже отмечалось выше, wget имеет довольно простой (наряду с таким богатым функционалом) синтаксис. В самых распространённых случаях для wget указывается один единственный параметр — ссылка (URL) на ресурс (файл, картинка, HTML-страница, каталог FTP-сервера и т.д.) для закачки:
$ wget https://www.drupal.org/download-latest/tar.gz
Если вы получите ошибку -bash: wget: команда не найдена, то необходимо установить wget
apt-get install wget
Или
yum install wget
И снова запустите команду
$ wget https://www.drupal.org/download-latest/tar.gz
В данном случае wget скачала архив c CMS Drupal с официального сайта разработчиков. Как видно, запрос был автоматически перенаправлен к FTP-ресурсу, с которого потом и началась закачка. Утилита в процессе своей работы наглядно выводит всю информацию о соединении и закачке: протокол, скорость, объём, прогресс, время и т. д. По-умолчанию закачки сохраняются в текущем каталоге.
Работа с прокси-сервером
Для того, чтобы задействовать подключение через прокси-сервер, можно просто использовать для этой цели специальные переменные окружения, а затем вызвать команду wget – она автоматически будет использовать сделанные настройки для прокси, как для HTTP, так и для FTP:
$ export http_proxy=someproxy.net:8080
Использование рекурсивной закачки
Чтобы заставить wget автоматически переходить по ссылкам и скачивать соответствующие ресурсы, нужно воспользоваться ключом -r. Также с помощью ключа -l можно указать, до какой глубины спускаться по ссылкам:
$ wget -r -l 0 -np http://my.home-site.ru/articles
В данном случае для ключа -l указано значение 0 — бесконечная глубина ссылок. Дополнительный ключ -np указывает wget, что в ходе рекурсивного исполнения нельзя подниматься выше указанного уровня (директории), т. е. в данном случае выше articles.
Следующая команда скачает сайт полностью
wget -r -k -l 0 -p -E -nc http://site.ru/
После чего в директорию site.ru загрузится сайт со всеми страницами. Параметр «-E» добавляет к файлам расширение html, «-nc» — не перезаписывать уже существующие файлы. Остальные опции мы уже рассмотрели выше.
Режим докачки
Докачивание файлов очень полезно при некачественном или низкоскоростном соединении. Когда необходимо продолжить закачку без потери прогресса после обрывов подключений или когда из-за низкой скорости не хватает времени завершить закачку за один раз. В таких случаях нужно использовать для wget режим докачки и для этого служит ключ -c. Например:
$ wget -c -t 0 https://www.drupal.org/download-latest/tar.gz
Ключ -t, используемый в данном примере позволяет задавать количество попыток. (0 — бесконечное число попыток) повторного соединения при обрывах. На самом деле, ключи -t и -c разумно использовать всегда.
Фоновый режим
Закачку с помощью утилиты wget можно (а часто даже нужно) запускать в фоновом режиме. Для этого предназначен ключ -b:
$ wget -b -c -t 0 https://www.drupal.org/download-latest/tar.gz
Работа продолжается в фоновом режиме, pid 22121
Выходные данные будут записаны в «wget-log».
При этом командная оболочка освободится для других задач. А вывод, который помещается в файл wget-log (текущего каталога) можно отслеживать командой tail -f wgetlog.
Не для кого не секрет, что Linux без интернета ничто.
ReplyDeleteКак унитаз без системы канализации