GNU Wget — это утилита командной строки для скачивания файлов и зеркалирования сайтов по протоколам FTP и HTTP, присутствующая по умолчанию в дистрибутивах Linux.
Содержание
Возможности
Среди возможностей Wget — работа в фоновом режиме после выхода из системы, рекурсивное извлечение каталогов, выбор файлов по шаблону, сравнение времени удаленных и локальных файлов, сохранение времени удаленных файлов при загрузке, использование REST с FTP серверами и Range с HTTP серверами для загрузки файлов по медленным или нестабильным каналам, поддержка прокси-серверов, конфигурируемость. Это самый настоящий интернет-насос.
Использование
Пользоваться Wget очень просто:
~$ wget http://drupal.mensh.ru/files/iron.tar.gz
--16:26:39-- http://drupal.mensh.ru/files/iron.tar.gz
=> `iron.tar.gz`
Распознаётся drupal... 78.110.56.234
Устанавливается соединение с drupal|78.110.56.234|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 60 383 (59K) [application/x-gzip]
100%[=====================================================================>] 60 383 --.--K/s
16:26:39 (56.99 MB/s) - `iron.tar.gz` сохранён [60383/60383]
Докачка
В случае обрыва связи докачка файла так же элементарна:
~$ wget -c http://drupal.mensh.ru/files/iron.tar.gz
Случаи получения битых файлов от Wget мне не известны.
Загрузка по списку
Загрузка по списку (каждая ссылка в файле links.inf должна находиться на новой строке):
~$ wget -i links.inf
Загрузка только изображений
Загрузка только изображений с расширением .jpg:
~$ wget -A.jpg http://linuxcookbook.ru/
Скачивание сайтов целиком
Следуя по ссылкам Wget способен создавать локальные версии сайтов, полностью копируя структуру оригинальных сайтов:
~$ wget --mirror -p --html-extension --base=./ -k -P ./ http://linuxcookbook.ru/
Использование в скриптах
Wget очень удобно использовать в периодических скриптах, таких как cron:
~$ crontab -l
...
#run-parts
0 1 * * * wget -O /dev/null http://linuxcookbook/cron.php
...
Опции
Опции Wget:
~$ wget --help
GNU Wget 1.10.2, программа для неинтерактивной загрузки файлов по сети.
Использование: wget [ОПЦИЯ]... [URL]...
Обязательные аргументы для длинных опций также являются обязательными и для коротких опций.
Запуск:
-V, --version вывод версии Wget и выход.
-h, --help вывод этой справки.
-b, --background после запуска перейти в фоновый режим.
-e, --execute=КОМАНДА выполнить команду в стиле `.wgetrc`.
Журналирование и входной файл:
-o, --output-file=ФАЙЛ записывать сообщения в ФАЙЛ.
-a, --append-output=ФАЙЛ дописывать сообщения в конец ФАЙЛА.
-d, --debug вывод большого количества отладочной информации.
-q, --quiet молча (без выходных данных).
-v, --verbose подробный вывод (по умолчанию).
-nv, --no-verbose отключение подробного режима, но не полностью.
-i, --input-file=ФАЙЛ загрузка URL`ов, найденных в ФАЙЛЕ.
-F, --force-html считать, что входной файл - HTML.
-B, --base=URL добавление URL в начало относительных ссылок в файле -F -i.
Загрузка:
-t, --tries=ЧИСЛО установить ЧИСЛО повторных попыток (0 без ограничения).
--retry-connrefused повторять, даже если в подключении отказано.
-O, --output-document=ФАЙЛ записывать документы в ФАЙЛ.
-nc, --no-clobber пропускать загрузки, которые приведут к
загрузке уже существующих файлов.
-c, --continue возобновить загрузку частично загруженного файла.
--progress=ТИП выбрать тип индикатора выполнения.
-N, --timestamping не загружать повторно файлы, только если они
не новее, чем локальные.
-S, --server-response вывод ответа сервера.
--spider ничего не загружать.
-T, --timeout=СЕКУНДЫ установка значений всех тайм-аутов в СЕКУНДЫ.
--dns-timeout=СЕК установка тайм-аута поиска в DNS в СЕК.
--connect-timeout=СЕК установка тайм-аута подключения в СЕК.
--read-timeout=СЕК установка тайм-аута чтения в СЕК.
-w, --wait=СЕКУНДЫ пауза в СЕКУНДАХ между загрузками.
--waitretry=СЕКУНДЫ пауза в 1..СЕКУНДЫ между повторными попытками загрузки.
--random-wait пауза в 0...2*WAIT секунд между загрузками.
-Y, --proxy явно включить прокси.
--no-proxy явно выключить прокси.
-Q, --quota=ЧИСЛО установить величину квоты загрузки в ЧИСЛО.
--bind-address=АДРЕС привязка к АДРЕСУ (имя хоста или IP) локального хоста.
--limit-rate=СКОРОСТЬ ограничение СКОРОСТИ загрузки.
--no-dns-cache отключение кэширования поисковых DNS-запросов.
--restrict-file-names=ОС ограничение на символы в именах файлов, использование которых допускает ОС.
-4, --inet4-only подключаться только к адресам IPv4.
-6, --inet6-only подключаться только к адресам IPv6.
--prefer-family=СЕМЕЙСТВО подключаться сначала к адресам указанного семейства,
может быть IPv6, IPv4 или ничего.
--user=ПОЛЬЗОВАТЕЛЬ установить и ftp- и http-пользователя в ПОЛЬЗОВАТЕЛЬ.
--password=ПАРОЛЬ установить и ftp- и http-пароль в ПАРОЛЬ.
Каталоги:
-nd, --no-directories не создавать каталоги.
-x, --force-directories принудительно создавать каталоги.
-nH, --no-host-directories не создавать каталоги как на хосте.
--protocol-directories использовать имя протокола в каталогах.
-P, --directory-prefix=ПРЕФИКС сохранять файлы в ПРЕФИКС/...
--cut-dirs=ЧИСЛО игнорировать ЧИСЛО компонентов удалённого каталога.
Опции HTTP:
--http-user=ПОЛЬЗОВАТЕЛЬ установить http-пользователя в ПОЛЬЗОВАТЕЛЬ.
--http-password=ПАРОЛЬ установить http-пароль в ПАРОЛЬ.
--no-cache отвергать кэшированные сервером данные.
-E, --html-extension сохранять HTML-документы с расширением `.html`.
--ignore-length игнорировать поле заголовка `Content-Length`.
--header=СТРОКА вставить СТРОКУ между заголовками.
--proxy-user=ПОЛЬЗОВАТЕЛЬ установить ПОЛЬЗОВАТЕЛЯ в качестве имени пользователя для прокси.
--proxy-password=ПАРОЛЬ установить ПАРОЛЬ в качестве пароля для прокси.
--referer=URL включить в HTTP-запрос заголовок `Referer: URL`.
--save-headers сохранять HTTP-заголовки в файл.
-U, --user-agent=АГЕНТ идентифицировать себя как АГЕНТ вместо Wget/ВЕРСИЯ.
--no-http-keep-alive отключить поддержание активности HTTP (постоянные подключения).
--no-cookies не использовать кукисы.
--load-cookies=ФАЙЛ загрузить кукисы из ФАЙЛА перед сеансом.
--save-cookies=ФАЙЛ сохранить кукисы в ФАЙЛ после сеанса.
--keep-session-cookies загрузить и сохранить кукисы сеанса (непостоянные).
--post-data=СТРОКА использовать метод POST; отправка СТРОКИ в качестве данных.
--post-file=ФАЙЛ использовать метод POST; отправка содержимого ФАЙЛА.
Опции HTTPS (SSL/TLS):
--secure-protocol=ПР выбор безопасного протокола: auto, SSLv2,
SSLv3 или TLSv1.
--no-check-certificate не проверять сертификат сервера.
--certificate=FILE файл сертификата пользователя.
--certificate-type=ТИП тип сертификата пользователя: PEM или DER.
--private-key=ФАЙЛ файл секретного ключа.
--private-key-type=ТИП тип секретного ключа: PEM или DER.
--ca-certificate=ФАЙЛ файл с набором CA.
--ca-directory=КАТ каталог, в котором хранится список CA.
--random-file=ФАЙЛ файл со случайными данными для SSL PRNG.
--egd-file=ФАЙЛ файл, определяющий сокет EGD со случайными данными.
Опции FTP:
--ftp-user=ПОЛЬЗОВАТЕЛЬ установить ftp-пользователя в ПОЛЬЗОВАТЕЛЬ.
--ftp-password=ПАРОЛЬ установить ftp-пароль в ПАРОЛЬ.
--no-remove-listing не удалять файлы файлы `.listing`.
--no-glob выключить маски для имён файлов FTP.
--no-passive-ftp отключить "пассивный" режим передачи.
--retr-symlinks при рекурсии загружать файлы по ссылкам (не каталоги).
--preserve-permissions сохранять права доступа удалённых файлов.
Рекурсивная загрузка:
-r, --recursive включение рекурсивной загрузки.
-l, --level=ЧИСЛО глубина рекурсии (inf и 0 - бесконечность).
--delete-after удалять локальные файлы после загрузки.
-k, --convert-links делать ссылки локальными в загруженном HTML.
-K, --backup-converted перед преобразованием файла X делать резервную копию X.orig.
-m, --mirror короткая опция, эквивалентная
-N -r -l inf --no-remove-listing.
-p, --page-requisites загрузить все изображения и проч., необходимые для отображения HTML-страницы.
--strict-comments включить строгую (SGML) обработку комментариев HTML.
Разрешения/запреты при рекурсии:
-A, --accept=СПИСОК список разрешённых расширений, разделённых запятыми.
-R, --reject=СПИСОК список запрещённых расширений, разделённых запятыми.
-D, --domains=СПИСОК список разрешённых доменов, разделённых запятыми.
--exclude-domains=СПИСОК список запрещённых доменов, разделённых запятыми.
--follow-ftp следовать по ссылкам FTP в HTML-документах.
--follow-tags=СПИСОК список используемых тегов HTML, разделённых запятыми.
--ignore-tags=СПИСОК список игнорируемых тегов HTML, разделённых запятыми.
-H, --span-hosts заходить на чужие хосты при рекурсии.
-L, --relative следовать только по относительным ссылкам.
-I, --include-directories=СПИСОК список разрешённых каталогов.
-X, --exclude-directories=СПИСОК список исключаемых каталогов.
-np, --no-parent не подниматься в родительский каталог.
Выводы
Команда wget является исключительно полезной и простой в использовании. Даже начинающие пользователи Linux смогут оценить её возможности и мощь.