
Чи доводилося вам пакувати валізу так, щоб умістилось усе й нічого не пом’ялось? Архіватор робить те саме з файлами – складає їх у спільний контейнер і, коли можливо, ущільнює дані без втрати якості.
Коли говоримо про архіватори, то маємо на увазі і програми, і формати, що зберігають багато файлів у цьому одному контейнері. Все це дуже зручно для зберігання, передачі й резервування. Але слід розрізняти два процеси: архівація (об’єднання файлів у пакет) і стиснення (зменшення розміру за рахунок статистики даних). Більшість популярних інструментів робить і те, й інше, але історично ці завдання виникли окремо. У цій статті ТехноВізор запрошує вас у подорож, щоб детальніше дослідити історію та те, як працюють архіватори.
З чого все починалося…
Коли тільки з’явилися персональні комп’ютери, і навіть раніше, в епоху великих комп’ютерів, дані записували на магнітні стрічки. Означало це, що доступ до інформації був послідовним – щоб знайти потрібний файл, доводилося прокручувати всю стрічку. Звідси виникла потреба пакувати безліч файлів в один, скажімо, “рулон” із службовими таблицями й назвами. Майже паралельно з’явилися алгоритми безвтратного стискання: кодування Хаффмана, родина LZ (LZ77/LZ78), яка вміє шукати повтори всередині даних. Відтоді ідея проста – контейнер відповідає за структуру, кодек – за менший розмір.
80–90-ті
Далі із стрімким ростом BBS і дискет у побут прийшов формат ARC, але революцію зробив PKZIP та відкритий ZIP. Поруч із ним змагалися ARJ (на той час – відмінний рівень компресії), RAR (багатотомні архіви й відновлювальні записи), LZH/LHA на японському ринку й StuffIt на Mac. Кожен шукав баланс між швидкістю, зручністю і відсотками стискання.
А от у Юнікс традиція була трохи інша – її головний принцип: кожна програма має робити одну конкретну річ, але робити її дуже добре.
До речі, Unix – це операційна система, яка стала основою для багатьох сучасних систем, включаючи Linux та macOS.
Наприклад, програма tar просто збирає багато файлів в один великий архів (який називають tarball). А для стиснення використовують інші, окремі програми. Спочатку для цього був compress. Потім його замінив gzip, який стискав краще. Згодом з’явилися bzip2 (стискає ще краще, але повільніше) і xz (найкраще стискає). Саме тому ми бачимо такі розширення, як .tar.gz чи .tar.xz – вони показують, що файл спочатку був зібраний в один архів за допомогою tar, а потім стиснутий окремою програмою.
Нове століття – 7-Zip, LZMA та “турбо”-кодеки
Кінець 90-х – 2000-ні принесли 7-Zip з форматом 7z і кодеком LZMA/LZMA2, який довго вважали королем компресії. Далі з’явилися Zstandard (zstd), LZ4 і Brotli – це вже про швидкість та стрімінг – стискання на льоту із мінімальною затримкою. Хоч ці кодеки частіше працюють у серверних частинах і файлових системах, сучасні архіватори вміють їх читати та створювати.
Щоб вам було ще більш зрозуміліше…
Контейнер – спосіб скласти багато файлів і метаданих в один блок (tar, zip як формат-контейнер).
Кодек – алгоритм стискання, який зменшує байти (DEFLATE, LZMA, zstd).
І якраз таки комбінація цих двох дає знайомі архіви, але у різних системах вони компонуються по-своєму.
Через свою популярність WinZip перетворив формат ZIP на простий інструмент, яким можна користуватись буквально в один клік, WinRAR поширив RAR і багатотомні архіви з паролями, 7-Zip дав безплатну альтернативу. Сьогодні більшість ОС відкриває ZIP просто з коробки, а утиліти по типу Keka, PeaZip або The Unarchiver допомагають з менш поширеними форматами. В хмарних сервісах архіви зручні для експорту/імпорту проєктів/бекапів, на мобільних, бо ж економлять трафік.
Як обрати формат під задачу
Ідеального варіанту на всі випадки немає, тому дивимося на компроміси:
- Для швидкого обміну між різними ОС беріть ZIP – відкриється всюди без додаткового ПЗ.
- Коли важливий кожен мегабайт, то придивіться до 7z або tar.xz.
- Якщо пріоритет – це швидкість і мінімальна затримка, підійде tar.zst чи класика tar.gz.
- Для довготривалого зберігання уникайте рідкісних закритих форматів.
Невеличкий чек-лист
- Надсилаєте фото друзям? ZIP.
- Архівуєте код і логи надовго? xz.
- Якщо робите резервні копії часто та додаєте лише нові файли, тут краще використовувати формати zst або ж спеціальні програми для резервного копіювання, які вміють знаходити й видаляти однакові файли.
Хочете запакувати папку з фото і надіслати без втрати якості? Нижче 4 короткі кроки
- Створіть архів ZIP. У Windows 11 – “Створити”, далі “Стиснута папка”, а у macOS – “Стиснути”.
- Додайте пароль якщо передаєте щось важливе/секретне – але пам’ятайте, що імена файлів у звичайному ZIP все ж видно.
- Для повної приватності використовуйте 7-Zip та опцію “шифрувати заголовки”.
- Переконайтеся, що адресат може відкрити обраний формат (у ZIP найменше сюрпризів).
Безпека (не тільки про паролі)
Архіви мають підводні камені. Стара схема шифрування в ZIP слабка, тому краще обирайте захист AES-256. Zip-бомби (так звані архіви смерті) можуть важити кілька кілобайтів, але розпаковуватися в сотні гігабайт чи навіть терабайт (просто уявіть) й виводити системи з ладу, тож не відкривайте підозрілі файли.
Навіть із сучасними файловими системами (ZFS, Btrfs, APFS), які стискають файли автоматично, та з хмарними сервісами, які самі сортують і пакують дані, архіватори залишаються актуальними. Саме тому формати, наприклад, Zstandard, поєднуючи швидкість+високу якість є незамінними. Така от історія архіваторів.. Вони як і раніше допомагають економити час та інтернет-трафік, а також наводять лад у ваших даних.
Декілька цікавих фактів
- ZIP з’явився у 1989 році і досі наймасовіший формат.
- bzip2 дає гарне стискання тексту, але розпаковується значно повільніше за gzip чи zstd.
- 7z має дуже високе стиснення, але може потребувати багато оперативки.
- RAR підтримує solid(безперервні)-архіви та вбудований recovery record для відновлення пошкоджених даних.
- Фото JPEG, відео MP4, музика MP3 вже стиснені – а ще раз стискаються слабо.
- Багато архіваторів уміють розбивати на томи (part1, part2…), щоб зручно переносити великі дані.
- Погані архіви можуть містити шляхи з ../ і спробувати записатися за межі папки – сучасні архіватори це блочать.