On Mon, May 19, 2008 at 10:02:03AM +0600, Ildar Mulyukov wrote: > On 18.05.2008 05:03:31, Alexey Tourbin wrote: > >Если класть хедеры в отдельные файлы, то > >оверхед в связи с этим будет очень > >большой (это и inode'ы, и перекачка > >информации о файлах). На самом деле если > >pkglist не сжимать, то rsync прокачает его > >гораздо быстрее (особенно если > >отсортировать хедеры по %{SOURCERPM}). > >Средний размер хедера в pkglist 2K, если > >сделать rsync --block-size=1K то мы возьмём почти > >чистый diff (с оверхедом того же порядка, > >что и при передаче хедеров по > >отдельности). Но почему-то почти все > >используют ftp, и ради них pkglist бзипют. > > Алексей, > > поделитесь, пожалуйста, как настроить apt, > чтобы это делать? Или Вы имеете в виду > напрямую rsync-ом? Дело в том, что rsync(1) как раз очень хорошо подохдит для синхронизации бинарных (и вообще любых) файлов, в которых некоторые куски меняются (возможно, со смещением), а некоторые куски остаются без изменения (возможно, тоже со смещением). Почитайте где-нибудь статью этого гуру я не помню как его на букву T тоже. Там очень хорошо описано, как файл разбивается на маленькие блоки, и на стороне клиента вычисляются всевозможные хеши для любых смещений. Поняв это, Вам также станят ясно (как Божий день), что совсем не нужен ещё один протокол для синхронизации кусков чего-то с другими кусками ещё чего-то. Достаточно одного хорошего протокола, коим является rsync. Проблема только в том, что rsync "не берёт" сжатые файлы. Это связано с понятием об этнропии, и это очень долго объяснять. Суть в том что сжатие полностью уничтожает буквально совпадение блоков, которое нужно для rsync. В общем, дилемма простая: либо синхронизируем разжатое, либо полностью скачиваем сжатое.