Перейти к содержимому

Архивы

Формат ZIP: спецификация и направления

Направления в обе стороны: из ZIP и в ZIP, с параметрами каждого преобразования.

.zip3 направления из ZIP5 направлений в ZIP

Спецификация ZIP

Спецификация ZIP
Полное имяZIP Archive
Разработчик спецификацииФил Кац, PKWARE
Год публикации1989
Расширение.zip
MIME-типыapplication/zip, application/x-zip-compressed
Тип содержимогоДвоичное
Модель сжатияБез потерь
АлгоритмыDeflate, реже BZip2 и LZMA
СжатиеНезависимое для каждого файла
ДоступПроизвольный — можно извлечь один файл
ШифрованиеAES-256 надёжно, устаревший ZipCrypto — нет
СовместимостьОткрывается без сторонних программ
Читающие программыПроводник Windows, Архиватор macOS, 7-Zip, WinRAR, Ark
Документ спецификацииОткрыть спецификацию

ZIP → другие форматы

Направления из ZIP: Архивы
НаправлениеЧто получитсяТочность
.zip.7zКонвертация ZIP в 7Zточная
.zip.tarКонвертация ZIP в TARточная
.zip.tar.gzКонвертация ZIP в TAR.GZточная

Другие форматы → ZIP

Направления в ZIP: Архивы
НаправлениеЧто получитсяТочность
.rar.zipКонвертация RAR в ZIPточная
.7z.zipКонвертация 7Z в ZIPточная
.tar.zipКонвертация TAR в ZIPточная
.tar.gz.zipКонвертация TAR.GZ в ZIPточная
.gz.zipКонвертация GZ в ZIPточная

Спецификация ZIP

ZIP хранит каждый файл отдельным потоком с собственным локальным заголовком, а в конце архива размещает центральный каталог со смещениями всех записей. Из-за этого содержимое читается без распаковки целиком, но повреждение хвоста делает архив нечитаемым. Метод сжатия — обычно deflate, тот же, что в PNG и gzip.

Независимое сжатие каждой записи — причина, по которой ZIP проигрывает форматам с солидным блоком: тысяча похожих текстовых файлов упакуется хуже, чем в 7Z или TAR.GZ, где общий словарь охватывает весь поток. Зато любой файл извлекается без чтения остальных. Уже сжатые данные — JPEG, PNG, MP3, MP4, PDF, документы Office — внутри архива не уменьшаются: их энтропия близка к пределу, и deflate добавляет лишь служебные байты.

Имена файлов исторически записывались в кодировке OEM, и только бит 11 общего флага объявляет их как UTF-8. Архиваторы, не выставляющие этот бит, порождают знаменитый набор нечитаемых символов вместо кириллицы при распаковке на другой системе. Классический формат ограничивал размер архива и записи четырьмя гигабайтами и числом записей 65 535; расширение Zip64 сняло эти пределы, но очень старые распаковщики его не понимают.

Шифрование существует в двух версиях. Наследственный ZipCrypto вскрывается при наличии небольшого фрагмента исходного текста и защитой считаться не может. AES-128 и AES-256 надёжны, но поддерживаются не всеми распаковщиками. Права доступа Unix, символические ссылки и расширенные атрибуты ZIP не хранит вовсе — для переноса на сервер применяется TAR, в том числе в связке с gzip.

Форматы того же класса

Остальные записи класса «Архивы». Для каждой заведена своя страница с полным перечнем направлений: и от ZIP, и к нему.

Вопросы по формату ZIP

Можно ли переупаковать архив с паролем?

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

Насколько плотнее упакует 7Z?

Зависит от содержимого. На тексте, коде, логах, CSV, дампах баз и несжатых форматах вроде BMP и WAV алгоритм LZMA2 с общим словарём выигрывает у deflate 30–60 %. На уже сжатых данных выигрыш стремится к нулю. Плата — время распаковки и необходимость стороннего архиватора: штатные средства Windows и macOS 7Z не открывают.

Сохраняется ли структура каталогов?

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