Для пользователей, желающих минимизировать сетевой трафик и ускорить загрузку ежедневных тестовых снапшотов Ubuntu, предоставлена возможность загрузки только изменившихся с момента прошлой загрузки частей iso-образа. Для загрузки только изменений вместо полной копии следует использовать утилиту [[http://zsync.moria.org.uk/ zsync]].По сути zsync является вариантом rsync, нацеленным на эффективную синхронизацию единичных больших файлов и реализующим логику синхронизации на стороне клиента. Для работы zsync не требуется установка особого сервернего ПО, достаточно создать небольшой индексный файл в котором будут сохранены контрольные суммы блоков данных и использовать обычный http-сервер, допускающий загрузку отдельных частей файла.
Устанавливаем zsync:
sudo apt-get -y install zsync
Загружаем iso-образ:
zsync http://cdimage.ubuntu.com/daily-live/current/raring-desktop-...
Если загрузка осуществляется первый раз, то zsync автоматически загрузит весь файл. Если файл загружается повторно, zsync загрузит индекс (для iso-образа ubuntu примерно полтора мегабайта), оценит изменений между локальным и удалённым файлом и загрузит только изменившиеся блоки данных.
Для создания zsync-индекса, при желании организовать распространение своих файлов через zsync, следует использовать утилиту zsyncmake:
zsyncmake file.iso
после чего будет создан файл file.iso.zsync.
Для корректной отдачи .zsync-индексов в конфигурацию Apache в файл mime.types следует добавить:
application/x-zsync zsync
URL: http://www.omgubuntu.co.uk/2013/01/how-to-update-an-ubuntu-d...
Обсуждается: http://www.opennet.me/tips/info/2733.shtml
А где хранится адрес откуда скачивать блоки образа? Ведь при создании индекса zsyncmake создается только индекс.
> А где хранится адрес откуда скачивать блоки образа? Ведь при создании индекса
> zsyncmake создается только индекс.В файлике с расширением .zsync вначале идёт блок мета-данных, где указано имя файла, размер блока и другая информация.
> А где хранится адрес откуда скачивать блоки образа? Ведь при создании индекса
> zsyncmake создается только индекс.Блоки грузятся из основного файла, который выложили для загрузки. Этот файл логически разбивается на сегменты, для которых в индексе хранятся контрольные суммы. Когда zsync загружает индекс, он сверяет контрольные суммы того что уже есть на стороне пользователя и то что различается грузить с удалённого сервера используя HTTP/1.1 заголовок Range.
хммм а разве не одно и тоже получает? он же вроде должен весь файл сверить поблочно и это равносильно скачиванию с сервера или я чтото недопонялкак реализован механизм контрольных сумм и чего ?
> А где хранится адрес откуда скачивать блоки образа?Обычно индекс лежит там же, где и файл.
Как-то так:
http://server/файл.iso
http://server/файл.iso.zsync
>> А где хранится адрес откуда скачивать блоки образа?
> Обычно индекс лежит там же, где и файл.
> Как-то так:
> http://server/файл.iso
> http://server/файл.iso.zsyncа на чьей стороне происходит сверка контрольных сумм ?
Клиентской ясен фиг. Клиент качает .zsync и смотрит что у него есть и насколько оно совпадает с вот этим вот описанием. Что не совпадает - качается с сервака.
А чё, торрент уже не феншуйно?
Торрент не умеет эффективно выкачивать изменения в уже имеющимся файле. Основное применение rsync это *инкрементная* передача данных.
> Торрент не умеет эффективно выкачивать изменения в уже имеющимся файле.o'rly?
Сегмент (англ. part — часть) — все файлы для передачи делятся на небольшие куски — сегменты, которые, затем, передаются по сети в произвольном порядке для оптимизации обмена.1. Выкладываете новый torrent файл
2. Пользователи его тыкают
3. bittorent клиент анализирует имеющийся у клиента iso, сравнивает crc каждого сегмента
4. Клиент закачивает только изменившиеся сегменты
5. PROFIT!В остальном, программа имеет право быть. Хотя это отдельная программа.
Её профит скорее для сервера - можно использовать http сервер, со всеми его плюшками (бекенды, балансировка, и т.д.), не нужно поднимать *sync сервер.
Клиент все равно должен использовать специальную программу для скачивания
Было бы классно, если бы был плагин к FF с такой функциональностью.
Спасибо, не знал про такую особенность протокола.
> Спасибо, не знал про такую особенность протокола.Через Magnet по-моему (или что-то ещё нужно) можно вообще обновлять
без уведомления клиентов. Просто в папку кидаешь новый файл с тем же
именем, а оно само по клиентам расползается.
А ещё есть PerFS, P2PFS, и другая распределённая хрень.
Насчёт торрента - если в начало файла добавится один байт, сработает ли ?
> Насчёт торрента - если в начало файла добавится один байт, сработает ли ?Не, там всё сдвинется на один байт.
чем jigdo не угодила?
постоянно недельные деб исошки обновляю ею
Поправьте если не так, но это может профильный кейс для jigdo (сборка iso из кучи rpm-файлов и одного со служебной информацией). В случае если большой файл "атомарный", это не прокатит.А вообще как выше сказали, тут скорее торрент альтернатива. Плюс, если данные нужны многим, еще и распределенное хранение вместо одного сервера, и скорость скачивания.