Библиотека сайта rus-linux.net
Управляем загрузкой в Linux с помощью wget
Оригинал: "Manage Linux Downloads with wget"Автор: Joe 'Zonker' Brockmeier
Дата публикации: September 7th, 2010
Перевод: Н.Ромоданов
Дата перевода: декабрь 2010 г.
Firefox, Chrome и другие браузеры пригодны для загрузки отдельного файла, имеющего разумный размер. Но мне бы не хотелось доверять браузеру скачивать образы ISO или другие файлы, размеры которых равны сотням мегабайт. Для этого я предпочитаю использовать утилиту wget. Вы узнаете, что в сравнении со скачиванием с помощью браузера использование утилиты wget предоставляет ряд существенных преимуществ.
Прежде всего, и это очевидно, при сбое в работе браузера или необходимости его по какой-либо причине перезагрузить, вы не потеряете то, что уже скачали. В последнее время браузеры Firefox и Chrome работали достаточно стабильно и сбоев не наблюдалось. Но не очень приятно, если будет скачано только 75% (или 98%) от образа ISO размером в 3.6 Гб для DVD с последней версией Fedora или OpenSUSE.
Также браузеры неудобны, если я хочу закачать файл на сервер. Например, если я на другом компьютере дистанционно настраиваю WordPress, мне нужно закачать на сервер архив с последней версией WordPress. Неразумно копировать архив на рабочий стол, а затем с помощью команды scp загружать его на сервер. На это потребуется (по меньшей мере) в два раза больше времени. Вместо этого я использую wget и подключившись через SSH, копирую архив на сервер и экономлю себе несколько минут.
Наконец, wget является скриптом. Если вы хотите каждый день в определенное время делать копию веб сайта или загружать к себе на компьютер некоторый файл, вы можете воспользоваться утилитой wget в качестве скрипта, который можно исполнять как задание cron. С помощью Firefox или Chrome это сделать трудно.
Знакомимся с wget
В большинстве дистрибутивов Linux утилита wget должна уже быть установлена, но если это не так, то просто поищите пакет wget. Утилита wget используется в нескольких приложениях и в нескольких приложениях есть на нее ссылки, так что, вероятно, в результате поиска вы обнаружите несколько пакетов, в том числе несколько графических оболочек для wget.
Давайте начнем с чего-нибудь простого. Утилита wget
позволяет при скачивании использовать протоколы HTTP, FTP и HTTPS, а
вы, предположим, решили получить самый последний релиз Linux Mint Fluxbox. Просто скопируйте URL, указывающий на образ ISO, и передайте его в утилиту wget следующим образом
wget http://ftp.mirrorsite.net/pub/linuxmint/stable/9/linuxmint-9-fluxbox-cd-i386.iso
Естественно, вы должны заменить "mirrorsite" на имя настоящего сайта, а путь — на действительный путь к образу ISO.
А как насчет нескольких файлов? Вот здесь утилита wget действительно начинает показывать свои преимущества. Создайте текстовый файл с адресами URL, указывающими на файлы, по одному в каждой строке. Например, если бы я хотел скопировать образы ISO для CD с Fedora 14 alpha, я бы скопировал в текстовый файл адреса URL каждого инсталляционного ISO следующим образом:
http://mirrorsite.net/pub/fedora/14/cd1.iso http://mirrorsite.net/pub/fedora/14/cd2.iso http://mirrorsite.net/pub/fedora/14/cd3.iso
Уловили идею? Сохраните этот файл как fedoraisos.txt, а затем укажите wget загрузить все образы ISO:
wget -i fedoraisos.txt
Утилита wget начнет закачивать образы ISO в том порядке, в каком они расположены в текстовом файле. На это может потребоваться определенное время, которое зависит от пропускной способности вашего сетевого соединения. А что произойдет, если передача прерывается? Не волнуйтесь. Если используется утилита wget и сетевое соединение оборвется, утилита возобновит работу с того места, где она была прервана.
Но что делать, если возникнет проблема с компьютером или вам по некоторой другой причине потребуется остановить работу wget? У утилиты wget есть параметр "continue" (-c) ("продолжить") , который позволит возобновить скачивание с того места, где оно было прервано.
Просто при повторном запуске скачивания укажите параметр -c перед аргументом с именем файла (именами файлов):
wget -c ftp://mirrorsite.net/filename.iso
Если вы пытаетесь возобновить скачивание после того, как утилита wget была остановлена, она, обычно, начинает скачивание заново и сохраняет результат в новом файле с расширением ".1", указываемым после имени основного файла. Таким образом, утилита wget пытается защитить вас от "затирания" уже имеющегося файла.
Зеркало сайта и другие возможности
Вы также можете использовать утилиту wget для создания зеркала сайта. Воспользуйтесь параметром --mirror и утилита wget попытается скопировать весь сайт, рекурсивно следуя по ссылкам и пытаясь скачать все, что она считает необходимым для сайта.
Если вы не являетесь владельцем сайта и пытаетесь сделать копию
сайта с использованием параметра --mirror, то, возможно, ваши
действия будут походить на действия агрессора. Если вы пытаетесь загрузить страницу с целью ее архивирования, то, может быть, лучше воспользоваться параметром -p (page - страница). Когда утилита wget закончит свою работу, она создаст директорий с именем сайта (так что если вы попытались скопировать Linux.com, это будет директорий linux.com) и ниже в нем будут находиться все необходимые файлы. Скорее всего, когда вы откроете сайт в браузере, сайт будет выглядеть не совсем так, как надо, но это хороший способ получить копию содержимого сайта.
Сайты, защищенные паролями, проблемой не являются, поскольку в утилите wget есть несколько параметров для передачи в сайт имени пользователя и пароля. Просто используйте параметры --user и --password следующим образом: wget --user=username --password=password ftp://mirrornet.net/filename.file, где замените имя пользователя username и пароль password вашими учетными данными. Вы можете вводить их с помощью скрипта, если вы совместно с другими пользуетесь системой и не хотите, чтобы другие пользователи могли с помощью команд top, ps или других аналогичных увидеть ваши имя и пароль.
Иногда сайт отказывает в доступе тем программам, которые не являются браузерами. Если такая проблема возникала, утилита wget позволит с помощью параметра –user-agent=agent-string подделать строку, идентифицирующую пользовательского агента.
Если у вас не самое быстрое в мире сетевое соединение, вы можете
несколько ограничить скорость работы утилиты wget с тем, чтобы
она не израсходовала всю доступную пропускную способность соединения,
либо, если у вас быстрое соединение, чрезмерно не подсадила удаленный сайт. Чтобы ограничить скорость работы, вы можете следующим образом воспользоваться параметром --limit-rate:
wget --limit-rate=2m http://filesite.net/filename.iso
Здесь утилите wget указывается ограничить нагрузку в 2 МБ, но можно
также пользоваться обозначением k, указывающим значение в килобайтах.
Если вы загружаете сразу много файлов, то с помощью параметра -w (wait - ожидание) вы можете указывать утилите wget делать паузы между загрузками. Так wget -w=1m указывает утилите wget делать между загрузками паузу в одну минуту.
У утилиты wget есть еще много различных возможностей, так что не забудьте посмотреть весь список параметров на странице руководства man. В будущем мы расскажем об использовании wget для решения более сложных задач и анализа ответов HTTP, получаемых от сервера Apache.
