Як архіватори зробили файли меншими? Історія стиснення даних

Чи доводилося вам пакувати валізу так, щоб умістилось усе й нічого не пом’ялось? Архіватор робить те саме з файлами – складає їх у спільний контейнер і, коли можливо, ущільнює дані без втрати якості.

Коли говоримо про архіватори, то маємо на увазі і програми, і формати, що зберігають багато файлів у цьому одному контейнері. Все це дуже зручно для зберігання, передачі й резервування. Але слід розрізняти два процеси: архівація (об’єднання файлів у пакет) і стиснення (зменшення розміру за рахунок статистики даних). Більшість популярних інструментів робить і те, й інше, але історично ці завдання виникли окремо. У цій статті ТехноВізор запрошує вас у подорож, щоб детальніше дослідити історію та те, як працюють архіватори.

З чого все починалося…

Коли тільки з’явилися персональні комп’ютери, і навіть раніше, в епоху великих комп’ютерів, дані записували на магнітні стрічки. Означало це, що доступ до інформації був послідовним – щоб знайти потрібний файл, доводилося прокручувати всю стрічку. Звідси виникла потреба пакувати безліч файлів в один, скажімо, “рулон” із службовими таблицями й назвами. Майже паралельно з’явилися алгоритми безвтратного стискання: кодування Хаффмана, родина 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 короткі кроки

  1. Створіть архів ZIP. У Windows 11 – “Створити”, далі “Стиснута папка”, а у macOS – “Стиснути”.
  2. Додайте пароль якщо передаєте щось важливе/секретне – але пам’ятайте, що імена файлів у звичайному ZIP все ж видно.
  3. Для повної приватності використовуйте 7-Zip та опцію “шифрувати заголовки”.
  4. Переконайтеся, що адресат може відкрити обраний формат (у ZIP найменше сюрпризів).

Безпека (не тільки про паролі)

Архіви мають підводні камені. Стара схема шифрування в ZIP слабка, тому краще обирайте захист AES-256. Zip-бомби (так звані архіви смерті) можуть важити кілька кілобайтів, але розпаковуватися в сотні гігабайт чи навіть терабайт (просто уявіть) й виводити системи з ладу, тож не відкривайте підозрілі файли.

Навіть із сучасними файловими системами (ZFS, Btrfs, APFS), які стискають файли автоматично, та з хмарними сервісами, які самі сортують і пакують дані, архіватори залишаються актуальними. Саме тому формати, наприклад, Zstandard, поєднуючи швидкість+високу якість є незамінними. Така от історія архіваторів.. Вони як і раніше допомагають економити час та інтернет-трафік, а також наводять лад у ваших даних.

Декілька цікавих фактів

  1. ZIP з’явився у 1989 році і досі наймасовіший формат.
  2. bzip2 дає гарне стискання тексту, але розпаковується значно повільніше за gzip чи zstd.
  3. 7z має дуже високе стиснення, але може потребувати багато оперативки.
  4. RAR підтримує solid(безперервні)-архіви та вбудований recovery record для відновлення пошкоджених даних.
  5. Фото JPEG, відео MP4, музика MP3 вже стиснені – а ще раз стискаються слабо.
  6. Багато архіваторів уміють розбивати на томи (part1, part2…), щоб зручно переносити великі дані.
  7. Погані архіви можуть містити шляхи з ../ і спробувати записатися за межі папки – сучасні архіватори це блочать.
Натисніть, щоб оцінити цю публікацію!
[Всього: 0 Середнє: 0]

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься.

65 − = 61