Helionix

Как сравнить два ZIP-архива по файлам, размеру и CRC

Как сопоставить два ZIP по центральному каталогу, путям, исходным размерам и CRC, заметить переименование и не принять переупаковку за изменение.

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

Загрузите обе версии в инструмент сравнения ZIP Helionix. Укажите старый файл первым, а новый вторым: тогда «добавлено» будет означать появление записи в новой версии, а «удалено» — её отсутствие.

Какие данные ZIP помогают сопоставлению

Основной список записей расположен в центральном каталоге ZIP. В нём обычно находятся имя, флаги, метод сжатия, CRC-32, сжатый и исходный размер, время и дополнительные поля. Локальные заголовки сопровождают сами данные. Если служебные сведения противоречат друг другу или каталог оборван, сравнение должно сообщить о проблеме, а не молча считать запись отсутствующей.

ПризнакКак использоватьОграничение
ПутьСвязать логически одну запись в двух ZIPПереименование выглядит как удаление и добавление
Исходный размерБыстро исключить очевидно разные данныеОдинаковый размер не означает одинаковое содержание
CRC-32Обнаружить обычные изменения и поврежденияНе является криптографическим хешем
Сжатый размерОценить различие упаковкиЗависит от метода и уровня сжатия

Порядок сравнения двух ZIP

  1. Переименуйте копии так, чтобы версии нельзя было перепутать.
  2. Убедитесь, что скачивание завершено и размер не равен размеру временного файла.
  3. Откройте «Сравнить архивы» и выберите оба ZIP.
  4. Сначала оцените ошибки чтения и общее число записей.
  5. Проверьте удалённые пути: среди них могут быть обязательные конфигурации и документы.
  6. Изучите изменённые элементы по исходному размеру, CRC и при необходимости SHA-256.
  7. Отдельно посмотрите новые исполняемые файлы и неизвестные расширения.

Почему одинаковое содержимое даёт разные ZIP

Один архиватор может использовать Deflate, другой — Store, а третий изменить уровень сжатия. Кроме того, меняются порядок записей, временные метки, комментарий архива, extra fields и версия программы. Поэтому различный размер ZIP или хеш всего контейнера не доказывает изменение документов. Сначала сравните каталог, затем — декодированные данные.

Как учитывать папки и имена

Приведите обратные и прямые слеши к одному виду, уберите ведущий ./ и не позволяйте сегментам ../ выходить выше корня. Решите заранее, считать ли Report.pdf и report.pdf разными. На Linux это разные пути, а в типичной конфигурации Windows они могут конфликтовать. Для кириллицы важно учитывать Unicode-нормализацию: визуально одинаковые названия способны иметь разную последовательность кодовых точек.

Зашифрованные и повреждённые ZIP

Без действующего пароля нередко можно увидеть имена и служебные параметры, но нельзя надёжно подтвердить содержимое зашифрованных записей. Используйте только известный пароль к своему файлу. Если не совпадает CRC, это может означать повреждение, неверный пароль или ошибку декодирования. Сохраните оригинал и сначала повторите скачивание из доверенного источника.

Локальные заголовки и центральный каталог

В исправном ZIP сведения из центрального каталога согласуются с локальными заголовками записей. При потоковом создании часть значений может находиться в отдельном дескрипторе данных, поэтому простое ожидание одного расположения приводит к ложным ошибкам. Корректный анализатор следует правилам формата, проверяет границы и не доверяет заявленному размеру безусловно. Если один ZIP читается лишь частично, отчёт должен назвать конкретные непроверенные записи, а не строить вывод о полном совпадении на основе доступного фрагмента.

Для SFX-архива дополнительно учитывается исполняемая оболочка перед структурой ZIP. Она меняет внешний хеш и размер, но не обязательно внутренний набор.

Частые вопросы

Можно ли определить переименованный файл?

Да, как вероятное переименование: путь исчез в старом месте и появился в новом, а размер и сильный хеш содержимого совпали. Это полезная интерпретация, но её лучше показывать отдельно от точного совпадения пути.

Следует ли сравнивать даты?

Для контроля содержимого обычно нет: дата меняется при копировании и упаковке. Для строгой проверки поставки дата и атрибуты могут быть значимы.

Что важнее — CRC или размер?

Используйте их вместе. Размер быстро отбрасывает различия, CRC подтверждает больше, а криптографический хеш содержимого даёт более сильную уверенность.

Итог

Сравнение ZIP нужно строить от пути к содержимому: путь связывает запись, размер и CRC показывают вероятное состояние, а потоковый хеш подтверждает критичные совпадения. Метаданные и способ упаковки анализируйте отдельно, чтобы не принять техническую переупаковку за правку документов.

Сравнить два ZIP →