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.


