Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Linux как клиент сети Internet

Управляем загрузкой в 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.