Работаем с wget в Debian
Одна из самых частых задач при работе с любой операционной системой – это скачивание файлов. Существует несколько способов получения файлов с удаленного компьютера. В этой статье я расскажу, как решить задачу скачивания файлов в Debian с помощью wget - программы, работающей из командной строки. По большому счету неважно работаете ли вы в Debian или нет т. к. wget входит в состав практически любого дистрибутива Linux. Wget поддерживает работу по протоколам: FTP, HTTP, HTTPS, может работать через HTTP прокси-сервер и поддерживает докачку файлов. Это не все, что может программа, с некоторыми возможностями мы познакомимся ниже, в примерах. Будем двигаться от простого к сложному.
Синтаксис команды следующий:
wget параметры... URL...
Просто скачиваем файл по протоколу HTTP или FTP. По умолчанию файл сохраняется в текущий каталог пользователя
$ wget http://debian.nsu.ru/debian-cd/current/amd64/bt-cd/debian-7.3.0-amd64-CD-1.iso.torrent
$ wget ftp://debian.nsu.ru/debian-cd/current/amd64/bt-cd/debian-7.3.0-amd64-CD-1.iso.torrent
Скачиваем файл в фоновом режиме, например, если файл большой или некогда следить за процессом загрузки. Для этого: или в конце строки через пробел добавляем амперсанд, или используем параметр -b
$ wget http://debian.nsu.ru/debian-cd/current/amd64/iso-dvd/debian-7.3.0-amd64-DVD-1.iso &
$ wget -b http://debian.nsu.ru/debian-cd/current/amd64/iso-dvd/debian-7.3.0-amd64-DVD-1.iso
Изменим каталог назначения с текущего на тот, который нужен нам. Используем параметр -P. Путь /path/for/save - это путь к каталогу назначения.
$ wget -P /path/for/save ftp://debian.nsu.ru/debian-cd/current/amd64/iso-cd/debian-7.3.0-amd64-netinst.iso
Скачиваем несколько файлов. Для этого пишем их URL-адреса через пробел.
$ wget ftp://ftp.gimp.org/pub/gimp/fonts/freefonts-0.10.tar.gz ftp://ftp.gimp.org/pub/gimp/fonts/sharefonts-0.10.tar.gz
Таким способом можно скачать пару-тройку файлов, но при большем их количестве это неудобно. Лучше организовать скачивание файлов списком. Для этого создаем файл list_downloads и вносим в него нужные URL-адреса. Каждый адрес вносим с новой строки. Ниже приведен пример содержания такого файла.
ftp://ftp.gimp.org/pub/gimp/contrib/gimp-nevit-airplanebrush01-20010210-1.gih.gz
http://debian.nsu.ru/debian-cd/current/amd64/bt-dvd/debian-update-7.3.0-amd64-DVD-1.iso.torrent
ftp://ftp.isc.org/lynx/lynx2.8.7/lynx2-8-7-tar.bz2
ftp://ftp.linux.org.uk/pub/linux/libc/libc-5.4.7.tar.gz
Запускаем скачивание списка файлов, используя параметр -i.
$ wget -i list_downloads
Если скачивание файла было прервано, то его можно докачать. Используем параметр -c.
$ wget -c http://debian.nsu.ru/debian-cd/current/amd64/iso-dvd/debian-7.3.0-amd64-DVD-1.iso
Все вышеприведенные примеры справедливы для открытых серверов. Если нужно скачать файл с сервера, требующего учётные данные, то делаем это следующим образом. Для скачивания по протоколу HTTP выбираем одну из двух видов записи. Здесь youlogin и youpassword соответственно логин и пароль.
$ wget --http-user=youlogin --http-password=youpassword http://ftp.yousite/foo_file.tar.gz
$ wget http://youlogin:youpassword@http://ftp.yousite/foo_file.tar.gz
То же самое для протокола FTP
$ wget --user= youlogin --youpassword=password ftp://ftp.yousite/foo_file.tar.gz
$ wget ftp://youlogin:youpassword@ftp.yousite/foo_file.tar.gz
Скачивание файлов только определенного формата. В параметре --accept через запятую перечисляются разрешенные для скачивания форматы. В примере так же используется параметр --reject, в котором тоже через запятую перечисляются уже запрещенные для скачивания форматы файлов
$ wget --accept=doc,pdf,djvu --reject=html,htm,php,zip -rl1 ftp://ftp.tomsknet.ru/pub/docs/books/
При скачивании файлов иногда требуется ограничить скорость загрузки. Для этого в параметре limit-rate указываем ограничение в байтах в секунду. Для удобства можно указывать приставки: k – килобайт в секунду, m – мегабайт в секунду.
$ wget --limit-rate=60k -c http://debian.nsu.ru/debian-cd/current/amd64/iso-dvd/debian-7.3.0-amd64-DVD-1.iso
$ wget --limit-rate=1m -c http://debian.nsu.ru/debian-cd/current/amd64/iso-dvd/debian-7.3.0-amd64-DVD-1.iso
Запустить скачивание в назначенное время можно, если wget использовать совместно с командой at.
$ echo 'wget http://debian.nsu.ru/debian-cd/current/amd64/bt-dvd/debian-7.3.0-amd64-DVD-3.iso.torrent' | at 17:55
Если соединение с интернет не стабильное, то в параметре программы --tries можно указать количество попыток подключения, которые будут сделаны для скачивания. В этом примере так же используется параметр -r для выполнения действия рекурсивно
$ wget -r --tries=11 ftp://ftp.gimp.org/pub/beast/v0.7/
В этом деле можно пойти дальше. Следующая команда будет одиннадцать раз возобнавлять закачку при разрыве соединения, даже в том случае, если от сервера будет получен ответ "В соединении отказано".
$ wget -t 11 --retry-connrefused http://debian.nsu.ru/debian-cd/current/amd64/iso-dvd/debian-7.3.0-amd64-DVD-1.iso
На самом деле параметр -t это коротая запись параметра --tries. Отметим, что значение параметра в короткой записи пишется через пробел, а в длинной записи после знака =. Параметр --retry-connrefused указывает на то, что действие следует повторять даже, если отказано в соединении.
С помощью wget можно проверить доступность ссылок, определить битые они или нет. Для этого создадим файл check_list, в который внесем ссылки для проверки. Каждая ссылка вносится с новой строки. Ниже приведен пример содержания такого файла.
http://opennet.ru
http://www.debian.org/distrib/packages
http://joomla.org/qq.html
После этого даём следующую команду. Параметр --spider переключает wget в режим работы "паука", т. е. проверяется наличие файлов, но они не загружаются.
$ wget -v --spider -i check_list
Для файла в формате HTML (в примере bookmarks.html) команда будет выглядеть следующим образом
$ wget -v --spider --force-html -i bookmarks.html
Среди прочих параметров wget существует один очень полезный -N. С его помощью можно сравнить локальный и такой же удаленный файл на сервере. И если удаленный файл был изменен, то он будет скачан. Сравнение производится по времени изменения файла. Ниже демонстрируется такая команда. Подразумевается, что локальный файл file.txt расположен в директории по умолчанию (домашний каталог пользователя).
wget -N http://server/file.txt
Следующие примеры более сложные, но они демонстрируют всю мощь wget.
Скачиваем страницу с глубиной вложенности 7, записывая протокол загрузки в файл log_wget.
$ wget -r -l 7 http://yousite/ -o log_wget
Для того, чтобы во всех скачанных страницах ссылки преобразовывались в относительные для локального просмотра, используем параметр -k:
$ wget -r -l 7 -k http://yousite/
Скачиваем содержимое директории http://yousite/vasja/jedy/ и всех её поддиректорий, при этом, не поднимаясь по иерархии каталогов выше указанной:
$ wget -r --no-parent http://yousite/vasja/jedy/
Копируем сайт целиком для офф-лайн просмотра:
$ wget -r -l 5 -k -p -E http://yousite/
К уже известным параметрам добавились: -p, который отвечает за скачивание всех изображений и CSS, и -E, который добавляет к скачанным файлам сценариев расширение html.
Синхронизируем сайт с его локальной копией. Очень полезно для организации резервного копирования.
$ wget --mirror http://yousite/
Программа wget поддерживает символы подстановки. Ниже приведен пример использования.
$ wget http://yousite/index.php?option=com_content&catid={1..100}
$ wget http://yousite/templates/stu25/main.{css,js}
На этом статья заканчивается, но не возможности программы wget. И в заключении ещё пара полезных команд:
$ wget --help
$ man wget
Помните, что у нас вы можете не только купить готовый сайт или заказать его разработку, но и подобрать подходящий тариф поддержки сайта, заказать продвижение сайта в поисковых системах, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! Айтишник РУ
Об авторе:
Меня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.
Ещё статьи о Debian
-
Установка Debian с usb накопителя
Эта статья является частью руководства «Установка Debian на сервер» и рассказывает о загрузке программы установки с usb накопителей. Под usb накопителями понимаются usb флеш карты, съёмные usb диски и кард ридеры с usb интерфейсом. Для написания статьи использовались две самые простые usb flash карты: SMI и Transcend объёмом 2 Гб каждая, а так же кард ридер с...
Как обновить Debian 6 Squeeze до Debian 7 Wheezy
Прошло более двух месяцев с момента выхода новой стабильной версии операционной системы Debian GNU/Linux – Debian 7 (Wheezy). За это время были исправлены ошибки и даже вышла новая версия – 7.1. А это значит, что теперь можно и...
Разметка дисков в Debian с помощью LVM
Эта статья является часть цикла статей о Debian/GNU Linux и является дополнением к статье «Установка Debian на сервер». В этой статье я расскажу, как произвести разметку диска используя LVM.LVM – это аббревиатура от Logical Volume Manager, что переводится как менеджер...
Настройка FTP сервера. Конфигурация с шифрованием SSL...
Теперь изменим нашу конфигурацию ftp сервера следующим образом: анонимные пользователи не используются. Используются только виртуальные пользователи, учётные записи которых хранятся в MySQL. Для каждого пользователя можно задать свою...
Настройка беспроводной карты (Wi Fi)
Попробовать настроить беспроводную карту (Wi Fi) в Debian можно ещё на этапе установки системы. Но на этапе установки поддерживается только алгоритм защиты WEP. Если используются более стойкий алгоритм защиты, то настройкой беспроводной...
Генерация ключей SSH
Мы знаем, что при подключении с использованием аутентификации с ключом хоста открытый ключ сервера копируется на компьютер-клиент. А где находятся ключи на сервере? На сервере они лежат в директории /etc/ssh. В Debian при установке...