Яка перевага використання формату Tar-файлу сьогодні?
Формат архівації tar, в обчислювальних роках, є справжнім Матуселом, але він все ще перебуває у великій кількості. Що робить формат tar так корисним довго після його створення?
Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..
Питання
Читач SuperUser MarcusJ цікавиться форматом tar та чому ми все ще використовуємо його після всіх цих років:
Я знаю, що tar був створений для архівів стрічки в той же день, але сьогодні у нас є формати файлів архіву, які об'єднують файли та виконують стиснення в тому ж самому форматі логічного файлу.
Запитання:
- Чи є покарання продуктивності під час етапів агрегації / стиснення / декомпресії для використання смоли, інкапсульованої в gzip або bzip2, у порівнянні з використанням файлового формату, який робить агрегування та стиснення в одній структурі даних? Припустимо, що час виконання порівняння компресора ідентичний (наприклад, gzip і Deflate подібні).
- Чи існують особливості формату файлів tar, яких не мають інші формати файлів, наприклад .7z і .zip?
- Оскільки tar є таким старим форматом файлів, і нові файли існують сьогодні, чому tar (чи інкапсульований у gzip, bzip2 або навіть новому xz) до цих пір так широко використовується на GNU / Linux, Android, BSD та інших подібних UNIX операційні системи, для передачі файлів, завантаження програмного джерела та бінарних файлів, а іноді навіть у форматі менеджера пакетів?
Це абсолютно розумне питання; За останні тридцять років в обчислювальному світі багато змінилося, але ми все ще використовуємо формат tar. Що таке історія?
Відповідь
Співробітник SuperUser Allquixotic пропонує деяке розуміння довговічності та функціональності формату tar:
Частина 1: Продуктивність
Ось порівняння двох окремих робочих процесів і їхнього виконання.
У вас є файл на диску
blah.tar.gz
що, скажімо, 1 Гб даних, стиснутих за допомогою gzip, які при нестисненні займають 2 ГБ (тому коефіцієнт стиснення 50%).Як би ви створили це, якщо ви робите архівування та стискання окремо, буде:
файли tar cf blah.tar ...
Це призведе до
blah.tar
що є простою агрегацієюфайлів ...
у стислому вигляді.Тоді ви б зробили
gzip blah.tar
Це буде читати вміст
blah.tar
з диска, стиснути їх за допомогою алгоритму стиснення gzip, написати вмістblah.tar.gz
, потім роз'єднати (видалити) файлblah.tar
.Тепер давайте розпакуємо!
Спосіб 1
Ти маєш
blah.tar.gz
, так чи інакше.Ви вирішили запустити:
gunzip blah.tar.gz
Це буде
- ЧИТАЙТЕ 1 ГБ стисненого вмісту даних
blah.tar.gz
.- ПРОЦЕСУ стиснення даних через
gzip
декомпресор в пам'яті.- Оскільки буфер пам'яті заповнюється даними "блоку", запишіть нестиснуті дані у файл
blah.tar
на диску і повторюйте, поки не зчитуються всі стислі дані.- Від'єднайте (видаліть) файл
blah.tar.gz
.Тепер у вас є
blah.tar
на диску, який незжатий, але містить один або більше файлів у ньому, з дуже низькими накладними структурами даних. Можливо, розмір файлу пара байт більше, ніж сума всіх даних файлу.Біжи:
tar xvf blah.tar
Це буде
- ПРОЧИТАЙТЕ 2 ГБ незжатого вмісту даних
blah.tar
ісмола
структури даних файлового формату, включаючи інформацію про права доступу до файлів, імена файлів, каталоги тощо.- WRITE на диск 2 ГБ даних плюс метадані. Це включає в себе: переклад структури даних / метаданих у створенні нових файлів і каталогів на диску відповідно, або переписування існуючих файлів і каталогів з новим вмістом даних.
Загальні дані ми READ З диска в цьому процесі було 1 Гб (для gunzip) + 2 Гб (для смоли) = 3 Гб.
Загальні дані ми WROTE на диску в цьому процесі було 2 Гб (для gunzip) + 2 Гб (для смоли) + кілька байт для метаданих = близько 4 Гб.
Спосіб 2
Ти маєш
blah.tar.gz
, так чи інакше.Ви вирішили запустити:
tar xvzf blah.tar.gz
Це буде
- ЧИТАЙТЕ 1 ГБ стисненого вмісту даних
blah.tar.gz
, блок за раз, в пам'ять.- ПРОЦЕСУ стиснення даних через
gzip
декомпресор в пам'яті.- Як буфер пам'яті заповнюється, він буде труби що дані, в пам'яті, через до
смола
синтаксичний аналізатор формату файлів, який буде читати інформацію про метадані і т.д. і нестиснутих даних файлів.- Як буфер пам'яті заповнюється в
смола
синтаксичний аналізатор файлів, він буде записувати нестиснені дані на диск, створюючи файли і каталоги і заповнюючи їх незжатим вмістом.Загальні дані ми READ З диска в цьому процесі було 1 Гб стислих даних, періоду.
Загальні дані ми WROTE на диску в цьому процесі було 2 ГБ нестиснених даних + кілька байт для метаданих = близько 2 Гб.
Якщо ви помітили, об'єм диска I / O в Спосіб 2 є ідентичні на диск I / O, виконуваний, скажімо,
Zip
або7-Zip
програми, що регулюють будь-які відмінності в ступені стиснення.І якщо ступінь стиснення є вашим занепокоєнням, використовуйте
Xz
компресор для інкапсуляціїсмола
, і у вас є архів LARMA2'ed TAR, який настільки ж ефективний, як і найдосконаліший алгоритм, доступний7-Zip
:-)Частина 2: Особливості
смола
зберігає права доступу до UNIX у межах своїх метаданих файлів і дуже добре відома і перевірена для успішної упаковки каталогу з усіма різними правами доступу, символічними посиланнями тощо. один файл або потік, але не обов'язково стискати його (хоча стиснення корисно і часто використовується).Частина 3: Сумісність
Багато інструментів розповсюджуються у вихідному чи двійковому вигляді як .tar.gz або .tar.bz2, оскільки це формат файлу "найменшого загального знаменника": як і більшість користувачів Windows мають доступ до .zip або .rar декомпресорів, більшість установок Linux, навіть найосновніший, буде мати доступ до, принаймні, смоли і gunzip, незалежно від того, скільки років або зменшених. Навіть прошивки Android мають доступ до цих інструментів.
Нові проекти, орієнтовані на аудиторії, що використовують сучасні дистрибутиви, можуть дуже добре поширюватися в більш сучасному форматі, наприклад .tar.xz (використовуючи формат стиснення Xz (LZMA), який стискається краще, ніж gzip або bzip2), або .7z, який схожий на Формати файлів Zip або Rar у тому, що вони стискають і вказують макет для інкапсуляції декількох файлів в один файл.
Ви не бачите .7z частіше з тієї ж причини, що музика не продається з онлайн-магазинів для завантаження в нових форматах, таких як Opus, або відео в WebM. Сумісність з людьми, що працюють на древніх або дуже базових системах.
Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.