Bsdiff, xdleta

Многим приходится обмениваться файлами через сеть. Иногда этот файл потом редактируется и опять передаётся кому-то, у кого уже есть первая версия файла. Если файлы большие, то это может быть накладно. В этом случае нет никакого смысла передавать весь файл, достаточно передать только разницу первой версии от второй.
С этой задачей может справится программы — Bsdiff или xdleta. Они сравнивают два двоичных файла и создают файл с разницей между ними. По файлу с разницей можно воссоздать второй файл из первого.
Например вам прислали архив с фотографиями , вы его распаковали и отредактировали пару фотографий и пару добавили. После чего вы, с помощью той же программы, создали архив с такими же параметрами. Этот архив вы хотите скинуть тому, у кого у же есть первая версия. Вместо этого, с помощью bsdiff, вы создаёте файл разницы и передаёте это файл.

$ bsdiff foto1.tar foto2.tar patch_foto1to2_tar.bsdiff

Что-бы получить второй файл из файла разницы, надо сделать так:

$ bspatch foto1.tar new_ver_of_file1.tar patch_foto1to2_tar.bsdiff

Таким образом нету необходимости передавать весь файл целиком, что может сэкономить время и трафик (и деньги, если трафик платный).

Пакет bsdiff присутствует почти во всех *nix подобных ОС, но если что — исходник можно взять с официального сайта. Порт для ОС Windows можно взять тут, ну или можно поставить Cygwin и установить соответствующий пакет.
На сайте bsdiff написано, что она генерирует патч файлы которые на 50-80% меньше чем xdellta. Я провёл несколько тестов, и результаты были ещё более впечатлительные. Для одного из них bsdiff была лучше аж 340% (притом, что я передавал xdelta опции, которые должны были создать наиболее маленький файл). Но bsdiff очень долго создавала патч, а xdelta сделала это почти мгновенно.
Благодаря этому xdelta всё ещё достаточно популярна (ну ещё и благодаря порту для ОС Windows на официальном сайте).
Пользоваться xdelta почти также просто как и bsdiff. Более детально о xdelta читайте в Википедии.

Запись опубликована в рубрике Utils с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>