пятница, 25 февраля 2011 г.

Ускоряем загрузку больших файлов из интернета.

  Источник: http://www.opennet.ru

Задача - скачать ISO образ линукса за короткое время.
Самое простое это:
   wget ftp://ftp.rediris.es/sites/releases.ubuntu.com/releases/feisty/ubuntu-7.04-desktop-i386.iso

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

В первую очередь устанавливаем программу CURL:

   sudo  apt-get install curl


Далее, ISO образ имеет объём 700Мб. Мысленно режем его на несколько частей по
100Мб и выбираем 4 зеркала с этим образом.

создаём файл ubuntu.sh:

   vim ubuntu.sh

в него вписываем:

   #!/bin/sh

   url1=http://ubuntu.intergenia.de/releases/feisty/ubuntu-7.04-desktop-i386.iso
   url2=http://ubuntu.virginmedia.com/releases/7.04/ubuntu-7.04-desktop-i386.iso
   url3=http://es.releases.ubuntu.com/7.04/ubuntu-7.04-desktop-i386.iso
   url4=http://ftp-mirror.internap.com/pub/ubuntu-releases/7.04/ubuntu-7.04-desktop-i386.iso

   curl --range 0-199999999 -o ubuntu-iso.part1 $url1 &
   curl --range 200000000-399999999 -o ubuntu-iso.part2 $url2 &
   curl --range 400000000-599999999 -o ubuntu-iso.part3 $url3 &
   curl --range 600000000- -o ubuntu-iso.part4 $url4 &

url1, url2, url3, url4 - переменные содержащие в себе ссылки на iso образ на разных зеркалах.

аргумен --range указывает с какого по какой байт надо скачать. --range
600000000- указывает что надо скачать
начиная с 600000000 и до конца.
ubuntu-iso.part1 и т.д. - названия файлов под которыми будут сохранены скачанные части iso образа.
Делаем скрипт исполняемым:

$chmod u+x ubuntu.sh

и запускаем его:

$./ubuntu.sh

в конечном итоге получаем 4 файла:

ubuntu-iso.part1 ubuntu-iso.part2 ubuntu-iso.part3 ubuntu-iso.part4

склеиваем их в один iso образ:

cat ubuntu-iso.part? > ubuntu-7.04-desktop-i386.iso

Получили готовый образ системы за относительно короткое время.

Комментариев нет:

Отправить комментарий