Скачивание файлов через терминал
Как только начал работать с убунту полноценно начал искать решение для скачивания файлов, поскольку закачка через браузер обрывалась.
И в этот момент мне пришла в голову идея о том что должна быть возможность скачать приложение чрез консоль, не ставя не какие графические примудрости, это команда
wget
так добавив к команде адрес того http адреса который мне нужно было скачать программа на удивление бодро начала выкачивать файлик, скачивала она его в ту дирикторию откуда была запущена команда, /home/username/
Оказывается у wget ещё есть и возможность докачаки файлов. (смотри инструкцию ниже)
После посмотрев документацию по wget был приятно удивлён что оказывается присутствует функция curl которую я встречал ещё при программировании.
Пример:
wget ftp://vasya.pupkin.com/film.avi
Для продолжения оборвавшейся закачки пишем:
wget -c ftp://vasya.pupkin.com/film.avi
или
wget --continue ftp://vasya.pupkin.com/film.avi
Как и в других программах, ключи имеют короткую и длинную формы, и вместо -с
можно написать -continue
. Длинные ключи проще запомнить, но дольше писать. Можно легко смешивать различные формы написания.
Чтобы выкачать файлы из списка, содержащего прямые ссылки:
wget -i pupkinlist.txt
или
wget --input-file=pupkinlist.txt
Здесь указывается только файл, в котором содержатся ссылки. Файл может так же быть HTML-страницей, в которой есть ссылки. Они будут выкачаны указанной выше командой.
Использование а-ля «Teleport Pro for Linux».
При скачивании веб-сайтов возможностей больше, и поэтому требуется больше ключей. Опять-таки, запоминать их все не обязательно, можно сделать скрипт (а лучше несколько - под разные случаи) и вызывать их.
Так вот, если имеется веб-сайт, и хотелось бы иметь его локальную копию на компьютере, чтобы, отключившись от сети, можно было не торопясь его почитать.
Зеркалирование сайтов на локальную машину:
wget -m http://www.vasyapupkin.com/
-m
эквивалентно -r -N -l inf -nr
, эти опции описаны ниже.
При этом ссылки останутся абсолютными - то есть, будут указывать на Интернет-адреса, и удобно просматривать на локальной машине будет затруднительно.
Копирование сайта для локального просмотра (с заменой интернет-ссылок на локальные адреса скачанных страниц):
wget -r -l0 -k http://www.vasyapupkin.com/
При этом будет включена рекурсивная выгрузка (ключ -r, –recursive),
Опции
В wget имеется большое количество полезных опций - побольше, чем у Teleport'а флажков. Будучи завёрнутым в скрипт, например, teleport
и положенным на видное место (указанное в PATH
), имеем удобство применения и богатство настроек.
-np
, –no-parent
— не подниматься выше начального адреса при рекурсивной загрузке.
-r
, –recursive
— включить рекурсивный просмотр каталогов и подкаталогов на удал©нном сервере.
-l
, –level=
— определить максимальную глубину рекурсии равной depth при просмотре каталогов на удалённом сервере. По умолчанию depth=5.
-np
, –no-parent
— не переходить в родительский каталог во время поиска файлов. Это очень полезное свойство, поскольку оно гарантирует, что будут копироваться только те файлы, которые расположены ниже определённой иерархии.
-A
, –accept
, -R
, –reject
— список имен файлов, разделенных запятыми, которые следует (accept) или не следует (reject) загружать. Разрешается задание имен файлов по маске.
-k
, –convert-links
— превратить абсолютные ссылки в HTML документе в относительные ссылки. Преобразованию подвергнутся только те ссылки, которые указывают на реально загруженные страницы; остальные не будут преобразовываться. Заметим, что лишь в конце работы wget сможет узнать какие страницы были реально загружены. Следовательно, лишь в конце работы wget будет выполняться окончательное преобразование.
–http-user=
, –http-passwd=
— указать имя пользователя и пароль на HTTP-сервере.
-H
, –span-hosts
— разрешает посещать любые сервера, на которые есть ссылка.
-p
, –page-requisites
— загружать все файлы, которые нужны для отображения страниц HTML. Например: рисунки, звук, каскадные стили (CSS). По умолчанию такие файлы не загружаются. Параметры -r
и -l
, указанные вместе могут помочь, но т.к. wget не различает внешние и внутренние документы, то нет гарантии, что загрузится все требуемое.