VD> Хм, а у меня и зип не испортился. Может, ты его не до целого блока VD> падишь?
VS>> Что означает "целый блок" применительно к произвольному файлу, VS>> лежащему на диске или на сетевой шаре? Как его рассчитать?
VD> Hа диске-то понятно: дисковый блок, рэйдовый страйп и т.п.
Как раз не очень понятно. Дисковый блок бывает разный, вот в UFS он может быть от 4096 и выше. Предлагаешь выяснять размер блока на данном конкретном диске перед паддингом?
VD> А сетевая шара - слишком высокого уровня абстракция, там и лок-то VD> (который lock) толком не определён, не то что блок.
На одном диске ufs создавалась с -b16384, на другом c -b4096, по-твоему от переноса диска на диск одного и того же zip архива паддинг может становиться то правильным, то неправильным?
>> Я показывал, как я падил: с помощью cat дописывал произвольное >> количество nul-ей к концу файла. По моему убеждению, zip такое в >> принципе вынести не может, ему и один лишний байт в конце архива >> должен поломать каталог.
VD> Проведём эксперимент:
Я провел аналогичный эксперимент, методом половинного деления пытался выяснить, после какого размера паддинга архив перестает читаться.
При count=73000 еще читается, при count=74000 уже перестает. Числа нарочно круглые, а не степени двойки или размеры каких-то гипотетических блоков. Дальше стало лень, но появилось предположение, что "паддинг до целого блока" или "до степени двойки" тут ни при чем, а просто у zip есть некоторая терпимость к нулям в конце архива, но она не безгранична.