ZIP — один из самых привычных форматов архивов. Им пользуются почти везде: от вложений в почте до дистрибутивов ПО и бэкапов. Ниже — что это за формат, как устроено сжатие, почему «зазиповать» JPEG почти бесполезно и как работать с ZIP в Windows и Linux.
Что такое ZIP-файл
ZIP — формат контейнера для одного или нескольких файлов и папок. Данные можно сжать или положить «как есть» (store). Формат открытый, давно стандартизирован и поддерживается ОС «из коробки».
Зачем он нужен
- Сжатие — текст, логи, исходники, CSV обычно заметно уменьшаются (часто алгоритм Deflate).
- Один файл вместо кучи — удобно передавать и хранить структуру каталогов.
- Пароль — часть инструментов умеет шифровать содержимое (стойкость зависит от метода и ПО).
- Кроссплатформенность — Windows, Linux, macOS, мобильные ОС открывают ZIP без экзотики.
- Store без сжатия — имеет смысл для уже сжатых медиа и когда важна скорость, а не размер.
Как открыть ZIP
Windows: двойной клик — проводник открывает архив как папку. Контекстное меню «Извлечь всё…» распаковывает на диск.
Linux / macOS (терминал):
unzip archive.zip unzip archive.zip -d /path/to/dir
Android / iOS: современные системы часто открывают ZIP встроенно; при необходимости — ZArchiver, RAR и аналоги.
Как создать ZIP
Windows: выделить файлы → ПКМ → «Отправить» → «Сжатая ZIP-папка» (формулировка может чуть отличаться в разных версиях).
Linux / macOS:
zip -r archive.zip folder/ zip -r archive.zip file1.txt file2.txt
Графические и консольные альтернативы: 7-Zip, WinRAR, peazip и др. Удобны, если нужны другие алгоритмы, шифрование AES или разбиение на тома.
Как работает сжатие в ZIP (Deflate)
Классический ZIP чаще всего использует Deflate — сжатие без потерь. После распаковки данные байт в байт совпадают с исходником. Deflate сочетает два подхода.
LZ77
- Ищет повторяющиеся фрагменты в уже просмотренном «окне» данных.
- Вместо повторной записи подставляет ссылку вида «вернись на N байт, возьми L байт».
- Текст с повторами, XML, код, логи сжимаются хорошо; «шумные» данные — плохо.
Кодирование Хаффмана
- Частые символы (или токены после LZ77) кодируются короткими битовыми кодами.
- Редкие — более длинными. В сумме поток занимает меньше бит.
Упрощённый пример
Исходная строка с сильным повтором:
ABABABABABABABABAB
После LZ77 идея сводится к «AB» и указанию повторить пару много раз (в реальности запись — пары offset/length, не дословный псевдокод). Затем Хаффман ужимает частотные токены. На практике 18 почти одинаковых байт превращаются в короткий битовый поток — отсюда выигрыш на тексте и логах.
Внутреннее устройство ZIP
Архив — не «просто куча сжатых байт», а понятная структура:
- Локальные заголовки у каждого файла: имя, размеры, метод сжатия, CRC и т.д.
- Сжатые (или store) данные сразу после локального заголовка.
- Центральный каталог — сводный список всех записей (его обычно читают архиваторы в первую очередь).
- Концевая запись (EOCD) — указатель на центральный каталог, чтобы быстро открыть архив с конца файла.
Именно из-за центрального каталога можно перечислить файлы без полной распаковки всего архива.
Какие методы сжатия бывают в ZIP
Не каждый ZIP — обязательно Deflate. Встречаются, в частности:
- Store (0) — без сжатия. Рационально для JPEG, MP3, MP4, уже готовых .zip/.7z.
- Deflate — де-факто стандарт, максимальная совместимость.
- BZIP2 — часто лучше по размеру на части данных, медленнее, хуже поддержка «везде».
- LZMA / LZMA2 — ближе к 7z по эффективности; не все старые распаковщики поймут.
- PPMd — силён на тексте, не универсален по софту.
Если архив должен открываться на любом ПК «двумя кликами», безопасный выбор — обычный Deflate или Store.
Почему ZIP не всегда уменьшает файлы
Сжатие без потерь ищет избыточность. Если её уже «выжали» другим кодеком, Deflate почти нечего делать: заголовки ZIP даже чуть увеличат размер.
- JPEG, PNG, WebP, MP3, AAC, MP4, MKV — уже сжаты. ZIP почти не поможет.
- Шифротекст и случайные данные — выглядят как шум, повторов мало.
- Уже архивы (.zip, .rar, .7z, .gz) — повторное сжатие бессмысленно.
Хорошо сжимаются: plain text, JSON/XML/CSV, исходники, логи, многие дампы БД, несжатый WAV/BMP (но их чаще перекодируют специализированными форматами, а не ZIP).
Нужен максимальный выигрыш по размеру на смешанном наборе файлов — смотрите 7z (LZMA2) или RAR; помните про совместимость у получателя.
Краткий чеклист
- Передать папку с проектом или логами — ZIP с Deflate идеален.
- Сложить пачку видео/фото — Store или сразу облако/торрент; ждать «в 10 раз меньше» не стоит.
- Нужен пароль — проверяйте, что и создатель, и получатель используют нормальное AES-шифрование, а не устаревший ZipCrypto, если важна защита.
- Скрипты и CI —
zip/unzipили 7z в зависимости от требований к формату.
Итог
ZIP остаётся универсальным «общим знаменателем» для упаковки файлов: просто, совместимо, достаточно для текста и кода. Он не волшебная кнопка «сжать всё»: медиа и уже сжатые контейнеры почти не ужимаются. Когда важнее размер, а не совместимость со старым софтом, разумны 7z или RAR; когда важнее «откроется у всех» — классический ZIP.


