Общие вопросы > Программное обеспечение Linux

Экономия трафика : zsync, rsync, xdelta,

<< < (2/4) > >>

krasnyh:

--- Цитата: betcher от 14 Май 2021, 07:23:11 ---Сейчас магос обновляется с rsync, соответственно качаются только изменения. Не для сборки, а для каждого модуля отдельно.
...
Но ввиду того что модули сжаты и каждый раз пересобираются, даже при небольших изменениях в репозиториях перед сборкой свежего магоса, rsync качает около половины размера сборки.
--- Конец цитаты ---




--- Цитата --- очень важное отличие zsync от rsync, о котором мы до сих пор не упоминали. Дело в том, что изменение даже одного байта исходного файла может привести к изменениям во всем файле его архива, так уж работают алгоритмы сжатия. По этой причине rsync не очень эффективен в синхронизации архивов.
--- Конец цитаты ---

--- Цитата --- К счастью, zsync умеет при необходимости делить на блоки и считать суммы не сам архив, а его распакованное содержимое, но при этом определять недостающие блоки не у распакованного содержимого, а у архива. Вот такая хитрость, подробнее читайте тут в разделе Compressed Content.
--- Конец цитаты ---
Хабр


Давно бы уже сами проверили на своей сборке эффективность zsync в сравнении с rsync. )

betcher:

--- Цитата: krasnyh от 16 Май 2021, 09:45:57 ---Давно бы уже сами проверили на своей сборке эффективность zsync в сравнении с rsync. )
--- Конец цитаты ---
Пожалуй надо)

betcher:

--- Цитата: krasnyh от 16 Май 2021, 09:45:57 ---Цитата

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

Цитата

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

Хабр
--- Конец цитаты ---
Похоже только gzip ((

krasnyh:

--- Цитата: betcher от 14 Май 2021, 07:23:11 ---даже при небольших изменениях в репозиториях перед сборкой свежего магоса, rsync качает около половины размера сборки.
--- Конец цитаты ---
Лежит у меня давно MagOS_2016.64_20210124.iso. Хотел проверить, скачав новый MagOS_2016.64_20210424.iso, но там какая-то хитрая сборка в iso, что zsyncmake2 не осилил.


В итоге, закинул файлы *.xzm нового iso на наш сервер, синхронизировал. По сети скачалось 103,35M из 1.9G. Заняло все это дело около 5 мин. Хеш модулей совпал.

--- [ Читать далее ] ---

--- Код ---
% grep fetched zsync2-magos.log
used 8261632 local, fetched 62615552 
used 327067648 local, fetched 5404672
used 125763584 local, fetched 3928064
used 326043648 local, fetched 3131392
used 176615424 local, fetched 2093056
used 173774848 local, fetched 15054848
used 167759872 local, fetched 765952 
used 225302528 local, fetched 4179968
used 208048128 local, fetched 1351680
used 40714240 local, fetched 4108288 
used 96763904 local, fetched 4534272 
used 8181760 local, fetched 1275904

live@lfa2008 /mnt/sda3/zsync2 % ll *.xzm
-r--r--r-- 1 live live  70877184 мая 17 21:59 00-kernel.xzm
-r--r--r-- 1 live live 332472320 мая 17 22:00 01-drivers.xzm
-r--r--r-- 1 live live 129691648 апр 24 06:44 10-core.xzm
-r--r--r-- 1 live live 329175040 апр 24 06:45 20-x-base.xzm
-r--r--r-- 1 live live 178708480 мая 17 22:01 35-x-plasma.xzm
-r--r--r-- 1 live live 188829696 мая 17 22:02 41-x-utilities.xzm
-r--r--r-- 1 live live 168525824 мая 17 22:02 42-x-network.xzm
-r--r--r-- 1 live live 229482496 апр 24 06:47 43-x-multimedia.xzm
-r--r--r-- 1 live live 209399808 мая 17 22:03 44-x-office.xzm
-r--r--r-- 1 live live  44822528 мая 17 22:03 45-x-java.xzm
-r--r--r-- 1 live live 101298176 апр 24 06:48 70-documentation.xzm
-r--r--r-- 1 live live   9457664 апр 24 06:52 88-magos.xzm


live@lfa2008 /mnt/sda3/zsync2 % md5sum *.xzm
7ef7aca90b10171c1b4456d57cb2cdf4  00-kernel.xzm
647cb5c8cc5e9aa077571563938066c0  01-drivers.xzm
9a8c5974c0828c3309e99db05d10f137  10-core.xzm
d85bb0d7eb5a8e3e7084aa22b2e25179  20-x-base.xzm
de1a60283536afc819723e45c74e6673  35-x-plasma.xzm
f5f116048ff24c5201a56644b9c829e2  41-x-utilities.xzm
ff05b2bb2141b44443e1eb71ffe83e99  42-x-network.xzm
f4ac871d63154ed71d45eb81b0317d77  43-x-multimedia.xzm
ba8bf3ed5e18f164a0e5b93392ab9464  44-x-office.xzm
f5c0560a11c5e0d07f81a3e11d2606e6  45-x-java.xzm
cbb33fabd452700860f89dcbe0575cf7  70-documentation.xzm
903c58ebce66fc66f4770d89d46b5ee9  88-magos.xzm

--- Конец кода ---

--- Конец цитаты ---

betcher:
Сделал несколько тестов. Не вполне корректно, но в целом более ли менее понятно. Итак. Один модуль 640 метров, второй модуль аналогичного размера, но в нем удалено пару файлов и добавлено пару других чтоб общий размер не сильно изменился.
rsync - отправил 181кб, скачал 22 метра.
zsync - сказал, что 99.2% уже есть. То есть скачать по идее должен 5.1 + 1.2 (размер самого sync файла) - 6.3 метра, но это чистый размер, сколько будет реально скачано не знаю, с моим http сервером качать отказался.
zsync2 - 99.5% остальное аналогично zsync, только размер zsync файла  - больше.
xdelta3 - абсолютный чемпион по размеру того что надо качать. Патч получился 1.9 метров.
Все это достаточно странно, так как везде утверждается, что алгоритм один и тот же.
По остальным аспектам применения все еще менее однозначно. Rsync - минимум телодвижений, закинул файл и уже работает, стандарт де факто.
Zsync - не развивается с 17 года, zsync2 - альфа. Протокол только http(s), вроде качает с libcurl, но с ftp не завелось. Httpd тоже не всякий подойдет, нужно чтоб чанками умел отдавать. Нужно создавать файл с метадатой для каждого выкладываемого файла.
Xdelta - по размеру патча чемпион, по всему остальному нет. Патч создается для конкретных файлов, то есть если у тебя более древний файл, чем тот для которого сделан патч уже не обновить. Можно патчи мержить, но это дополнительный геморрой. Сам качать не умеет. Можно по идее сделать скиптовую обвязку и получится zsync ))

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии