У Linux / Unix чи має значення .tar.gz проти .zip?


69

Програми між платформами іноді поширюються у форматі .tar.gz для версії Unix та .zip для версії Windows. Це має сенс, коли вміст кожного повинен бути різним.

Якщо ж вміст буде однаковим, було б простіше просто завантажити одну завантаження. Windows віддає перевагу .zip, оскільки це формат, з яким він може працювати поза коробкою. Це має значення для Unix? Тобто я сьогодні спробував розпакувати файл на Ubuntu Linux, і він спрацював чудово; чи є проблема з цим на будь-якій поточній операційній системі, схожій на Unix, чи добре просто надати .zip-файл у всьому платі?

Відповіді:


28

Некромантування.
Так, це має значення.
Власне, це залежить.

tar.gz

  • Зберігає атрибути файлу unix : uid, gid, дозволи (найбільш помітно виконувані). За замовчуванням може залежати ваш розподіл, і його можна перемикати за допомогою параметрів.
  • Консолідує всі файли, які потрібно архівувати в одному файлі ("Архів стрічки").
  • Фактичне стиснення виконується GZIP, на одному файлі .tar

блискавка

  • Зберігає атрибути MSDOS . (Архів, Readonly, приховано, система)
  • Стискає кожен файл окремо, потім консолідує окремо стислі файли в одному файлі
  • Включає таблицю файлів у кінці файлу

Оскільки zip стискає файли окремо, zip-архів, швидше за все, матиме більший розмір (особливо з багатьма меншими файлами - думаю, конфігураційні файли).

Отже, ви бачите, залежно від розміру файлу, якщо ви накопичуєте купу файлів на Linux / Unix, а потім розпаковуєте їх, файлові атрибути не зникнуть (принаймні, ті, що не підтримуються MS-DOS - залежить від того, який ZIP -програмне забезпечення, яке ви використовуєте). Це може мати значення, а може і не, в цьому випадку це не має значення (оскільки різниця у розмірі файлу в більшості випадків незначна).


10
стандартний дистрибутив zip в unix-подібних системах (info-zip) також зберігає атрибути файлу unix.
Ерік Аронесті

35

tar gz краще для Linux / Unix, оскільки він зберігає дозволи, такі як "виконуваний" сценарії.


8
Утиліта архіву OS X та zip / unzip зберігають дозволи, але можуть бути й інші утиліти, які не роблять.
Лрі

4
Стандартні інструменти zip / unzip (info-zip) зберігають дозволи на Linux та часові позначки на Windows. Дивіться: en.wikipedia.org/wiki/Info-ZIP щодо типових можливостей ..., який долає проблеми дозволу та обмеження розміру файлів, зберігаючи бажані випадкові можливості доступу та редагувані властивості архіву.
Ерік Аронесті

33

Найпопулярніші дистрибутиви Linux в ці дні за замовчуванням обладнані zipсумісністю. Але , як заявив nc3b, tarі gzipє більш поширеними в системах Linux / Unix. Якщо вам потрібна 95% сумісність у цих системах, розгляньте можливість використання tarта gzip. Якщо вам потрібно лише 85%, zipбуде добре.


2
Гаразд, 95% краще, ніж 85% :-) Дуже незначне питання, чи це взагалі має значення, якщо розширення файлу .tgz замість .tar.gz?
rwallace

8
Розширення зовсім не має значення, воно просто використовується для довідок користувачами та програмами. Якщо розширенням є .XXX, а ви знаєте, що це .tar, ви можете все-таки використовувати tar для його вилучення. Фактично .tgz і .tar.gz є однаковими однаковими розширеннями, а файли з цими розширеннями будуть подібними.
BloodPhilia

2
З іншого боку, для 100% сумісності в Windows вам потрібно буде використовувати кабіну.
kinokijuf

3
tar зберігатиме uid, gid та дозволи, такі як + x у системах Unix. поштові магазини зберігають архів, лише для читання, приховані та системи на системах Windows.
Ендрю Де Андраде

1
@mtak ви завжди можете просто скористатися gunzip --suffix .zip npm-debug.log.zipабоgunzip -c < npm-debug.log.zip > npm-debug.log
Iwan Aucamp

19

tar / gzip - досить шалений формат, оскільки до архіву неможливо отримати випадковий доступ, оновити, перевірити або навіть додати ... без розпакування всього архіву.

zip в цьому відношенні набагато кращий .... ви можете швидко отримати вміст zip-файлу, додати його без повторного натискання першої частини тощо.

zip має деякі обмеження розміру ... залежно від версії "zip", яку ви використовуєте ... і це може бути проблемою. але стандартний інструмент для інфо-zip, який постачається з більшістю ОС Linux, не має обмежень щодо розміру, і дозволяє добре зберігати дозволи на файли.

дивіться: https://en.wikipedia.org/wiki/Info-ZIP щодо можливостей


Про які обмеження ви говорите?
Пейсьєр

редагував та надав посилання
Ерік Аронесті

9

Встановлення Barebones Unix не містять unzip (тобто встановлення сервера), але вони завжди містять tar та gzip . Якщо ваша аудиторія є серверами, я б пішов на gzip .

Також gzip має більшу компресію, ніж zip , тому файл буде меншим.


1
Я б не сказав, що gzip стискає краще, ніж ZIP. Обидва використовують один і той же алгоритм DEFLATE, і всі порівняння, які я робив, дають однакові результати за розміром файлу.
grawity

4
Добре, tar.gz стисне весь файл за один раз, тоді як zip стискає файли окремо. Для багатьох невеликих файлів перший підхід, як правило, генерує помітно менші файли, оскільки надмірність може бути використана в усіх файлах. Однак різниця не величезна.
sleske

3

Так, це має значення. Дьоготь - архіватор. І в tar.gz ми стискаємо цей архів.

Zip - це і архіватор, і компресор.

Якщо ви порівнюєте стиснення, з мого досвіду, gzip набагато краще, ніж zip.

А інша суттєва різниця згадується в іншій відповіді . Якщо у вас дуже великий архів файлів, і ви хочете витягти невеликий файл, Zip дозволяє вам це зробити. Але з tar.gz вам потрібно витягнути весь архів.


Не архів gzipped файлів, а gzip архівованих файлів. Ось чому ви повинні витягнути весь архів.
m93a

2

Рішення в основному зводиться до таких:

  • GZIP зберігає дозволи на файли Unix , оскільки дозволено виконувати файли.

  • З іншого боку ZIP працює поза вікном у Windows.


1

tarі gzipнабагато частіше зустрічаються на * nix-es, ніж unzip. Наприклад, на даний момент в моїй арці-2009.08 немає unzip.


6
Але є bsdtar(частина libarchive), яка обробляє ZIP штрафом.
grawity

На жаль: "> Не знав про це. Дякую! :-)
nc3b
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.