Відповіді:
дьоготь
блискавка
Той факт, що zip стискає файли окремо, впливатиме на коефіцієнт стиснення, особливо на багатьох малих подібних файлах.
(Принаймні, це було точно правильно десятиліття тому.)
Тар зберігає набагато більше метаданих, ніж Zip, дивіться моє порівняння (воно трохи застаріло):
(Клацніть для збільшення)
Дьоготь проходить 65% тестів, де Zip проходить лише 17%. Я зробив тестовий набір доступним на github за ліцензією BSD, щоб ви могли спробувати самі, якщо у вас Mac. Для Linux там я не впевнений, чи є якісь метадані, тому ці тести можуть не бути актуальними.
Ефективність може бути виміряна різними способами:
Є й інші питання, наприклад "Наскільки поширені інструменти для маніпулювання архівами, що виникають в результаті?"
Так, наприклад, bzip2
створюються менші файли ніж gzip
, але це може зайняти значно більше часу. Також, на мій досвід gzip
, універсальний для Unix-подібних систем, але bzip2
все ще немає (хоча це дуже часто і зазвичай легко отримати).
Як зазначив Вім, дьоготь сам по собі не стискається. Якщо ви додаєте стискати дьоготь (наприклад, щоб отримати .tar.gz або .tar.bz2), ви стискаєте весь файл смоли відразу. На відміну від цього, zip стискає кожен файл окремо.
Ефективність залежить від завантаженості. Зокрема, zip дозволяє отримати доступ до окремих файлів безпосередньо. За допомогою дьогтю ви повинні спочатку шукати непотрібні (стиснуті) файли раніше. Ефективність стиснення залежить від того, що ви стискаєте. tar
з bzip2
часто краще для великої кількості подібних файлів (наприклад, вихідний каталог). zip
може бути краще, якщо кожен файл має дуже різний вміст.
Архіви Zip містять в кінці центральний каталог їх вмісту (швидше за все, щоб уникнути необхідності створювати каталог заздалегідь, де ви ще не знаєте, що буде всередині). Це дозволяє швидко витягнути окремі файли без розпакування всього архіву: Просто прочитайте каталог архівів і витягніть лише те, що потрібно. Однак для цього потрібен доступ до всього архіву та вимагає випадкового доступу, який доступний лише на блокових пристроях (дискети, жорсткі диски). Крім того, каталог архівів є вразливим: якщо архів з якоїсь причини обрізається, для його отримання потрібні значні майстри, щоб витягти з архіву все корисне.
Архіви Zip були створені для використання BBS, де було важливо вміти зв'язувати каталог в один єдиний (і стислий) файл, а не завантажувати, можливо, тисячі одиничних файлів. Так само, як і більшість веб-сайтів, вони завантажують свої завантаження навіть сьогодні, з тих же причин.
Архів дьогтю був розроблений для створення резервних копій для використання для стрічкових накопичувачів, отже, для послідовного доступу . Центрального каталогу немає; натомість архів містить блоки заголовків через рівні проміжки часу, які вказують, які файли будуть слідувати в наступних кількох блоках. Архів дьогтю призначений для читання одним махом; якщо потрібно витягнути лише один файл, архів читається послідовно, починаючи з самого початку до знайденого потрібного файлу (що може бути і в самому кінці). Стиснення застосовується поверх цього; кожен з різних програм стиснення, які застосовуються до бітумінозних архівів ( compress
, gzip
,bzip2
тощо) - це потокові компресори і не змінюють послідовний характер архіву ні в якому разі. У гіршому випадку вам знадобиться трохи більше блоків, поки ви не зможете розпочати видобуток.
Це може здатися тривіальною різницею, але насправді являє собою полярну протилежність у філософії. У архівах zip завжди є необхідність мати весь файл під рукою, щоб зробити з ним все корисне, тоді як архів смоли може бути переданий у конвеєр. Я можу завантажити великий архів дьогтю і почати витягувати його з самого початку, як тільки з’являться перші кілька блоків (і, можливо, перервати завантаження, як тільки я отримаю шуканий файл). Для архіву Zip мені потрібно чекати, поки з’явиться каталог архіву, який приходить в самому кінці архіву. Але як тільки я зробити є весь файл під рукою, витягуючи часткове утримання від нього буде набагато швидше з файлу дьогтю.
Обидва формати мають для них один дуже сильний момент, залежно від того, де і як вони використовуються. Оскільки трубопроводи (і, отже, поняття потокової передачі даних з одного процесу в інший) дійсно існують лише у світі Unix, головне перевагу архівів дьогтю втрачається в інших системах, тому Zip-архіви там набагато популярніші. Але архіви з дьогтем більш гнучкі, тому я віддаю перевагу їм, коли маю вибір.
Як уже було сказано, tar створює великий "блок" усіх файлів, які можна стиснути компресором потоку, як gzip або bzip2.
Недоліком цього є те, що вам потрібно розпакувати весь файл, щоб отримати доступ до одного файлу всередині архіву.
Перевагою цього є те, що коефіцієнт стиснення зазвичай вище, особливо коли стислі файли дуже схожі.
Інші пакети, такі як "rar", мають "режим блоку" (або подібний), щоб мати той же ефект.