Данный метод применим относительно Unix систем для быстрого скачивания больших файлов с серверов на которых настроены лимиты отдачи контента. Пример такой настройки хорошо виден вконтакте, когда открываешь страничку с фильмом и если соединение с интрнетом скоростное, то хорошо видно, как несколько минут фильм закачиваются мгновенно, а остальная часть закачивается гораздо медленне. Это удобно и для пользователей и хозяев сервера, пользователь просто смотрит фильм и может чуть чуть подмонуть его, пропустив титры, а сервер получает меньшую нагрузку. Но это не удобно, когда нужно быстро скачать файл, закинуть на флешку и ехать за 3/9 земель.
Решить эту проблему можно с помощью просто скрипта на Bash, суть его такова, в бесконечном цикле запускается wget с опцией докачивания файла и запуском процесса в фоне, затем следует пауза в 3 секунды, а затем запускается команда выключающая процесс wget и если команда отключения сработала, то значит файл ещё не докачался и нужно повторить докачку иначе закончить цикл. Таким образом прерывая процесс закачки каждые 3 секунды можно добиться максимальной скорости отдачи контента с Вконтакта.
Скрипт демонстирует работу трёх встроенных в bash переменных
$@ список аргументов переданных при запуске скрипта, эту переменную можно использовать если нужно скачать несколько файлов сразу
$! в этой переменной находится PID последнего запущеного в фоне процесса, эту переменную удобно использоваться для вычислений PID процесса wget для того чтобы выключить его с помощью команды kill
$? в этой переменной находится результат выполнения последнй запущенной программы, а эта переменная используется для определения сработала ли команда kill относительно запущенного в фоне wget
вот код скрипта vk-download.sh
wget -c $@ &
sleep 3
kill $!
if [ $? != 0 ]; then break; fi;
done;
Для запуска скрипта необходимо дать ему права на выполнение: chmod a+x vk-download.sh и использовать его следующим образом:
vk-download.sh https://psv4.userapi.com/c542408/u131936184/videos/97a37e246e.240.mp4 https://psv4.userapi.com/c542408/u131936184/videos/97a37e246e.720.mp4
Разумеется для скачивания видео из ВК необходимо уметь добывать ссылку на видео, но это другая история. Стоит заметить что с этим скриптом файлы скачиваются в 4-5 раза быстрее чем с помощью обычных методов, вот результат работы скрипта с утилитой time для закачики 338 мегабайтного файла
real 4m27.508s
user 0m1.316s
sys 0m7.340s
Комментариев 0