Качаем в командной строке Самым популярным инструментом для закачки файлов и целых сайтов является утилита GNU Wget, которая, как правило, устанавливается по умолчанию. Поддерживает все популярные протоколы HTTP/HTTPS и FTP, умеет работать через HTTP прокси-сервер. Чем так удобен wget? Самое главное, что wget является не-интерактивной программой, поэтому натравив программу на сайт вообще можно о ней забыть. Повлиять на ее работу можно только убив процесс (например, нажатием Ctrl+D в той консоли в которой запущена программа). При использовании веб-браузера, пользователь должен постоянно отвечать на какие то вопросы и скачивание больших объемов информации может быть утомительно. Чтобы скопировать весь сайт целиком достаточно ввести команду:
$ wget http://server.org/
И через некоторое время в текущем каталоге появится полная копия сайта. Чтобы при обрыве соединения закачка возобновлялась добавляем параметр -с. Так можно скачать отдельный файл.
$ wget -c http://server.org/file.rar
Параметр -r указывает на рекурсивный обход, а -l на его глубину. Обойдем рекурсивно все каталоги сайта, на глубину не более 10:
$ wget -r -l10 http://server.org/
Наиболее часто используемые параметры можно указать в конфигурационном файле .wgetrc, который создается в домашнем каталоге пользователя. Очень удобно скачивать файлы по расписанию. Например, создадим задачу для закачки файла в 02.00 (необходимо чтобы работал демон atd).
$ at 0200
warning: commands will be executed using /bin/sh
at> wget -c http://server.org/file.rar
at> Нажимаем Ctrl+D
Wget удобная и популярная программа, но к сожалению развивающаяся очень вяло. Поэтому стоит обратить свое внимание на сURL (http://curl.haxx.se/), которая поддерживает на порядок большее количество протоколов: FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE и LDAP. Знает об сертификатах SSL, прокси, cookies, возможна аутендификация пользователей по имени и паролю.
Например, чтобы скачать заглавную страницу сайта, вводим:
$ curl http://www.linux.org/ -o linux.html
Параметров у нее довольно много, расскажу только о самом интересном, который привлек в свое время мое внимание именно к этой утилите. Называется он -r/–range. С его помощью можно указать только на часть файла. Что это нам дает? Находим несколько зеркал и загружаем файл частями с каждого зеркала, а затем собираем.
$ curl -r 0-350000000 http://releases.ubuntu.com/kubuntu/7.10/kubuntu-7.... -o kubuntu_7_10_1 &
$ curl -r 350000001- http://de.releases.ubuntu.com/kubuntu/7.10/kubuntu... -o kubuntu_7_10_2 &
После того как обе части будут скачаны, соединяем их, командой cat kubuntu_7_10_* > kubuntu-7.10-desktop-i386.iso. Проверяем контрольную сумму при помощи md5sum и если все нормально записываем дистрибутив на диск.