Изучаем команду wget на 12 примерах / Хабр

[сеть, интернет] авторизация на сайте и скачивание файла

OffTopic:
InnI

Признаться, я не вижу связи между вашим намёком и моими словами.

Постараюсь объяснить мои слова.

IMHO если вы пишите скрипт для автоматизации программ связанных с определённой областью (в частности WEB), то будет очень кстати (хотя бы поверхностно) проштудировать DHTML, PHP, JScript, ASP и т.д. Да это муторно и долго, но так устроен мир, только негативное в нём получается быстро, позитивное же рождается мучительно и долго. Поэтому, если вы не готовы долго и мучительно идти к поставленной цели, то лучшим вариантом будет обратиться в стол заказов.

За всем новым не гонюсь в принципе, потому, что в старом нахожу для себя ещё много полезного и интересного.

Хотелось бы услышать ваши мысли по поводу вот этого предложения.
dbs[?]

§

OffTopic:
InnI

Признаться, я не вижу связи между вашим намёком и моими словами.

Постараюсь объяснить мои слова.

IMHO если вы пишите скрипт для автоматизации программ связанных с определённой областью (в частности WEB), то будет очень кстати (хотя бы поверхностно) проштудировать DHTML, PHP, JScript, ASP и т.д. Да это муторно и долго, но так устроен мир, только негативное в нём получается быстро, позитивное же рождается мучительно и долго. Поэтому, если вы не готовы долго и мучительно идти к поставленной цели, то лучшим вариантом будет обратиться в стол заказов.

За всем новым не гонюсь в принципе, потому, что в старом нахожу для себя ещё много полезного и интересного.

Хотелось бы услышать ваши мысли по поводу вот этого предложения.
dbs[?]

Загрузка одного файла

Если всё, что нужно — это загрузка одного файла, нам подойдёт следующая конструкция:

Отдача файла через браузер без показа его места хранения с возможностью докачки и регулирования скорости

$realFilePath = dirname( __FILE__ ) . '/file.zip';//Полный путь к отдаваемому файлу

Этот метод очень похож на Drupal и иже с ним:

$CargaDes = new CargaDes;
$client_d = new ClientD($realFilePath);

//Не обязательные аргументы
$client_d->erroff = false;//True отключает вывод ошибок
$client_d->lang = 'ru';
$client_d->speed = 25;// это скорость отдачи в kB, если 0 то не используется;

Я добавил еще отдачу с помощью Apache, но должна быть включена директива XSendFile On

. Загрузка с сайта только файлов определённого типа


Для того, чтобы загрузить с сайта только файлы определённого типа, можно воспользоваться параметрами

-r -A

$ wget -r -A.txt Website_url

. Пропуск файлов определённого типа

Если вы хотите скопировать целый веб-сайт, но при этом вам не нужны файлы определённого типа, отключить их загрузку можно с помощью параметра

--reject

$ wget --reject=png Website_url

. Загрузка с использованием собственного .log-файла

Для того, чтобы загрузить файл и использовать при этом собственный

.log

-файл, воспользуйтесь параметром

-o

и укажите имя файла журнала:

Загрузка файла и сохранение его с новым именем


Если мы хотим сохранить загруженный файл под именем, отличающимся от его исходного имени, нам пригодится команда

wget

с параметром

-O

Ограничение скорости загрузки файлов

При необходимости скорость загрузки файлов с помощью

wget

можно ограничить. В результате эта операция не будет занимать весь доступный канал передачи данных и не повлияет на другие процессы, связанные с сетью. Сделать это можно, используя параметр

--limit-rate

и указав ограничение скорости, выраженное в байтах (в виде обычного числа), килобайтах (добавив после числа

K

) или мегабайтах (

M

) в секунду:

Завершение прерванной загрузки


Если в ходе загрузки файлов эта операция была прервана, можно возобновить загрузку с помощью параметра

-c

команды

wget

Фоновая загрузка файла

Если вы загружаете файл огромного размера и хотите выполнять эту операцию в фоне, сделать это можно, используя параметр

-b

Загрузка нескольких файлов

Если имеется список URL файлов, которые надо загрузить, но вам не хочется вручную запускать загрузки этих файлов, можно использовать параметр

-I

. Однако, перед тем, как начинать загрузку, нужно создать файл, содержащий все адреса. Например, сделать это можно такой командой:

$ vi url.txt


В этот файл нужно поместить адреса — по одному в каждой строке. Далее, осталось лишь запустить

wget

, передав этой утилите только что созданный файл со списком загрузок:

$ wget –I url.txt

Выполнение этой команды приведёт к поочерёдной загрузке всех файлов из списка.

Увеличение общего числа попыток загрузки файла

Для того, чтобы настроить число повторных попыток загрузки файла, можно использовать параметр

--tries

Загрузка файлов с FTP-сервера


Команда загрузки файла с анонимного FTP-сервера с помощью

wget

выглядит так:

$ wget FTP-URL

Если для доступа к файлу требуются имя пользователя и пароль, то команда примет такой вид:

Создание локальной копии веб-сайта

Если нужно загрузить содержимое целого веб-сайта, сделать это можно, воспользовавшись параметром

--mirror

Качаем медиа с любого сайта без напряга

Детство. Вкусное и доброе.

Наши дни. Приехал к маме на дачу, на Родину, под вечер
Племяши там, отдыхают, бабушке помогают. Меня увидели, бегут к машине, тянут ручонки, здороваются, как мужики.
-Привет, чижики! Как дела?
-Хорошо! Грядки пропололи, полили все.
-Помогаете бабушке? Не лентяйничаете?
-Да.
-Ну, спрошу у нее.
Обнял маму, чай попили.
-Что, как шпана?
-Да молодцы, помогают.
Выхожу на улицу.
-Федька, Захар!
Прибежали.
-Червей накопайте сегодня и спать пораньше ложитесь. Завтра рано утром на озеро поедем. На карася.
-Урррраааа!
Достал из сарая удочки, нашел снасти. Перебрали вместе.
Мама подошла.
-Серега, если на рыбалку поедете, Володю ( мамин и отцов одноклассник и друг нашей семьи)возьми, а. Болеет, от рака лечится, на машине ездить своей боится, раз сознание за рулем потерял. Слава Богу, обошлось.
-Да возьму, не проблема.
Созвонился, договорились, что в 5 утра заеду за ним.
Утро и мы в путь. Забрали дядю Володю и на озеро. Не туда,куда с дедом ездили, на другое, дядя Володя посоветовал. Да не суть, главное же -РЫБАЛКА.
Солнышко встает. Озеро в дымке, цапли по берегам, утки, с утятками следом, плывут по своим делам, чайки ныряют за рыбой, дерутся, кричат друг на друга.
Через пару часов простая еда, собранная мамой в дорогу, чай сладкий и ароматный с листьями смородины и чабрецом.
А вечером будет жареный со сметаной карась. Клев есть, пусть и карась мелкий, не как давно, раньше. Так всегда кажется.
И довольные, даже СЧАСТЛИВЫЕ, глаза племяшей и дяди Володи.

Все циклично и вкусно в жизни, надо просто этого ЗАХОТЕТЬ и поделиться с близкими. А они передадут дальше.
Улыбаюсь.
Хорошего всем дня! И Золотую Рыбку!

Пруфы есть(чо я не пикабушник что ль).

Предисловие


Раньше я об этом не задумывался и пользовался готовым решением типа от Drupal для отдачи файлов и более мне не надо было. Пока несколько месяцев назад у меня не возникла острая необходимость не только отдавать файлы.

В интернете есть много информации о том как скачивать файлы с сервера и загружать файлы на сервер, а также между серверами. Но нигде нет простого решения которое было бы более ли менее универсально.

Я несколько дней убил на изучение всяких заголовков и вариаций использования cUrl, но собрать все воедино не выходило. Видел много разных подобных классов, но везде было либо частичное решение, либо очень запутанно, либо и то, и другое.

И лишь благодаря единичным статьям, кусочкам информации с форумов и всяким комментариям удалось собрать пазл воедино. Я не утверждаю что мое решение полностью универсально, но очень удобное во многих случаях, хотя это вам решать.

Если у кого-либо возникнет желание улучшить мое решение этого вопроса и хватает знаний в этом направлении, то я буду рад, если вы сделаете какие-либо исправления или добавления к коду который лежит в открытом доступе на GitHub.

А теперь к делу, функции класса CargaDes:

  1. Отдача файла через браузер без показа его места хранения и с возможностью докачки;
  2. Загрузка файла на сервер через браузер с индикатором прогресса;
  3. Скачивание файлов с удаленного сервера на свой сервер с индикатором прогресса;
  4. Загрузка файлов со своего сервера на удаленный сервер с индикатором прогресса.

Итоги

Wget — довольно простая в использовании, но весьма полезная утилита Linux. И, на самом деле то, о чём мы рассказали — лишь малая часть того, что она умеет. Надеемся, этот обзор поможет тем, кто не был знаком с wget, оценить эту программу, и, возможно, включить её в свой повседневный арсенал инструментов командной строки.

Уважаемые читатели! Пользуетесь ли вы инструментами командной строки Linux для загрузки файлов? Если да — просим о них рассказать.

По итогу хочу сказать

Если этот класс поможет хотя бы одному человеку я буду очень рад этому. Как я уже говорил в начале буду рад конструктивной критике и дополнениям которые могут привести к улучшению класса. Ссылка на CargaDes.class.

Похожее:  Работа PHP через прокси c помощью cURL на примере парсинга

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *