Домашня » як » Яка перевага використання формату Tar-файлу сьогодні?

    Яка перевага використання формату 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? Перегляньте повний потік обговорення тут.