Кратко о сути jigdo. jigdo состоит из двух взаимно дополняющих друг друга утилит - jigdo-file и jigdo-lite.
Первая утилита, jigdo-file сканирует образ диска и находит там файлы. Для каждого файла утилита рассчитывает хэш md5 - контрольную сумму. В результате сканирования образа утилита создаёт два файла - шаблон диска (*.template), содержащий всю информацию из образа за исключением файлов, и сжатый список файлов с контрольными суммами (*.jigdo).
Вторая утилита, jigdo-lite на основании файлов *.jigdo и *.template может воссоздать образ диска. Недостающие файлы она может найти в произвольном указанном ей каталоге на локальном диске или скачать с указанного ей Интернет-зеркала Debian.
Таким образом jigdo - это умный вариант rsync или torrent, предназначенный для скачивания iso-образов, который умеет собирать часть образа диска из имеющихся уже скачанных файлов.
Установим пакет jigdo:
# aptitude install jigdo-file
Создаём текстовый файл jigdo-list.txt, содержащий в каждой строке по одной ссылке на файлы *.jigdo и *.template для скачивания, ссылки берём на странице http://cdimage.debian.org/debian-cd/4.0_r4a/i386/jigdo-dvd/:
http://cdimage.debian.org/debian-cd/4.0_r4a/i386/jigdo-dvd/debian-40r4a-i386-DVD-1.jigdo http://cdimage.debian.org/debian-cd/4.0_r4a/i386/jigdo-dvd/debian-40r4a-i386-DVD-1.template http://cdimage.debian.org/debian-cd/4.0_r4a/i386/jigdo-dvd/debian-40r4a-i386-DVD-2.jigdo http://cdimage.debian.org/debian-cd/4.0_r4a/i386/jigdo-dvd/debian-40r4a-i386-DVD-2.template http://cdimage.debian.org/debian-cd/4.0_r4a/i386/jigdo-dvd/debian-40r4a-i386-DVD-3.jigdo http://cdimage.debian.org/debian-cd/4.0_r4a/i386/jigdo-dvd/debian-40r4a-i386-DVD-3.template http://cdimage.debian.org/debian-cd/4.0_r4a/i386/jigdo-dvd/debian-update-4.0r4a-i386-DVD-1.jigdo http://cdimage.debian.org/debian-cd/4.0_r4a/i386/jigdo-dvd/debian-update-4.0r4a-i386-DVD-1.template
Запускаем скачивание файлов из списка:
$ wget -i jigdo-list.txt
В файле /etc/fstab прописываем монтирование имеющихся образов:
/home/iso/debian-40r4-i386-DVD-1.iso /mnt/debian1 udf,iso9660 user,loop=/dev/loop0 0 0 /home/iso/debian-40r4-i386-DVD-2.iso /mnt/debian2 udf,iso9660 user,loop=/dev/loop1 0 0 /home/iso/debian-40r3-i386-DVD-3.iso /mnt/debian3 udf,iso9660 user,loop=/dev/loop2 0 0 /home/iso/debian-update-40r3-i386-DVD-1.iso /mnt/debian4 udf,iso9660 user,loop=/dev/loop3 0 0
Смонтируем все ISO-образы:
# mount -a
Запустим jidgo-lite для первого образа, в диалоге укажем путь до первого смонтрованного диска:
$ jigdo-lite jigdo/debian-40r4a-i386-DVD-1.jigdo
Программа выдаст запрос, где можно поискать уже скачанные файлы, укажем ей смонтированный диск:
Files to scan: /mnt/debian1/
После сканирования файлов в каталоге, подсчёта и сопоставления контрольных сумм, программа определит количество найденных файлов:
Found 4627 of the 4627 files required by the template
После чего создаст образ диска и выдаст соответствующее сообщение:
Successfully created `debian-40r4a-i386-DVD-1.iso'
Затем программа проверит контрольную сумму полученного образа, чтобы убедиться что полученный диск абсолютно идентичен находящемуся на официальном сайте debian:
OK: Checksums match, image is good!
Отлично, первый диск готов!
Переходим ко второму:
$ jigdo-lite jigdo/debian-40r4a-i386-DVD-2.jigdo
И этот диск тоже не пришлось качать, я в восторге!
Следующие два образа у меня более старые, поэтому кое-что всё-таки пришлось качать.
$ jigdo-lite jigdo/debian-40r4a-i386-DVD-3.jigdo
Программа запоминает использованные источники файлов и предлагает указать один из них их цифрой, можно ввести новый источник файлов.
1: /mnt/debian2/ 2: /mnt/debian1/ Files to scan: /mnt/debian3/
На этот раз программа нашла лишь часть файлов:
Found 5121 of the 8309 files required by the template Copied input files to temporary file `debian-40r4a-i386-DVD-3.iso.tmp' - repeat command and supply more files to continue
Пока программа не нашла все подходящие файлы, она будет выводить предложение указать дополнительные источники снова и снова, если у Вас больше нет источников, можно нажать Enter:
Files to scan:
После этого программа предложит указать зеркало в сети, с которого можно скачать недостающие пакеты. У меня установлен apt-cacher, который указан в файле /etc/apt/sources.list. Программа сама предлагает мне использовать его, я соглашаюсь нажатием Enter:
Debian mirror [http://127.0.0.1:3142/debian/]:
После чего программа начнёт скачивание недостающих пакетов из сети. Для скачивания используется программа wget. Если Вы хотите скачивать недостающие файлы через прокси-сервер, можно настроить переменные окружения или конфигурацию wget, в которой указать адрес, порт имя и пароль используемого прокси-сервера.
Я таким образом закачал себе все три основных диска и диск с обновлениями. Насколько я понял, диск с обновлениями содержит только те пакеты, которые изменились с прошлого выпуска, потому что этот диск мне не пришлось скачивать - достаточно было указать три основных уже скачанных смонтированных диска. Имея этот диск можно обновить систему с предыдущего выпуска до текущего.
Итак, краткое описание использования программы.
Для скачивания через прокси можно соответствующим образом настроить wget, чтобы для скачивания не нужно было держать постоянно открытым отдельный терминал, можно воспользоваться программой screen.