Начална » как да » Какво е предимството на използването на Tar файл формат днес?

    Какво е предимството на използването на Tar файл формат днес?


    Форматът за архивиране на катран е, в изчислителните години, истински Матусал, но той все още е в тежка употреба днес. Какво прави формата на катраните толкова полезен дълго след неговото създаване?

    Днешната сесия за въпроси и отговори идва при нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, групирано от общността уеб сайтове за въпроси и отговори.

    Въпроса

    Читателят на SuperUser MarcusJ е любопитен за формата на 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 GB данни, компресирани с gzip, които при некомпресиране заемат 2 GB (така коефициентът на компресия от 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 GB blah.tar.gz.
    • ПРОЦЕС на компресираните данни през софтуерна декомпресор в паметта.
    • Тъй като буферът за запаметяване се зарежда с данни за "блок", запишете некомпресираните данни във файлаblah.tar на диск и повторете, докато не бъдат прочетени всички компресирани данни.
    • Премахнете връзката (изтриване) на файла blah.tar.gz.

    Сега имате blah.tar на диск, който е некомпресиран, но съдържа един или повече файлове в него, с много ниска структура на данни. Вероятно е размерът на файла няколко байта по-голям от сумата на всички данни за файловете.

    Ти бягаш:

    tar xvf blah.tar 

    Това ще

    • Прочетете съдържанието на некомпресирани данни от 2 GB blah.tar и катран структури на данни на файловия формат, включително информация за разрешения за файлове, имена на файлове, директории и т.н..
    • Напишете на диск 2GB данни плюс метаданните. Това включва: превеждане на структурата от данни / метаданни в създаването на нови файлове и директории на диска, както и пренаписване на съществуващи файлове и директории с ново съдържание.

    Общите данни ние ПРОЧЕТИ от диск в този процес е 1GB (за gunzip) + 2GB (за катран) = 3GB.

    Общите данни ние НАПИСАЛ на диска в този процес е 2GB (за gunzip) + 2GB (за tar) + няколко байта за метаданни = около 4GB.

    Начин 2

    Ти имаш blah.tar.gz, по един или друг начин.

    Вие решавате да стартирате:

    tar xvzf blah.tar.gz 

    Това ще

    • Прочетете съдържанието на компресирани данни от 1 GB blah.tar.gz, блок в даден момент, в паметта.
    • ПРОЦЕС на компресираните данни през софтуерна декомпресор в паметта.
    • Тъй като буферът на паметта се запълва, ще стане тръба тези данни, в паметта, до катран анализатор на файлов формат, който ще прочете информацията за метаданни и т.н. и данните за некомпресираните файлове.
    • Както буферът на паметта се запълва в. \ T катран Файлов парсер, ще пише некомпресираните данни на диск, като създава файлове и директории и ги попълва с некомпресирано съдържание.

    Общите данни ние ПРОЧЕТИ от диск в този процес е 1GB компресирани данни, период.

    Общите данни ние НАПИСАЛ на диска в този процес са 2GB некомпресирани данни + няколко байта за метаданни = около 2GB.

    Ако забележите, количеството дискове I / O в Начин 2 е идентичен на I / O диска, изпълняван от, да речем, цип или7-Zip програми, регулирайки всякакви разлики в степента на компресия.

    А ако сте загрижени за компресията, използвайте XZ компресор за капсулиране катран, и имате LZMA2'ed TAR архив, който е също толкова ефективен, колкото и най-напредналия алгоритъм, с който разполагате 7-Zip :-)

    Част 2: Характеристики

    катран съхранява разрешенията на UNIX в своите файлови метаданни и е много добре познат и тестван за успешно пакетиране на директория с всякакви различни разрешения, символни връзки и т.н. Има повече от няколко случая, при които може да се наложи да добавите няколко файлове в един файл или поток, но не непременно да го компресирате (въпреки че компресията е полезна и често използвана).

    Част 3: Съвместимост

    Много инструменти се разпространяват в изходен или двоичен вид като .tar.gz или .tar.bz2, защото той е най-малкия файлов формат: подобно на повечето Windows потребители имат достъп до .zip или .rar декомпресори, повечето Linux инсталации, дори най-основните, ще имат достъп до най-малко катран и gunzip, независимо колко възрастни или скъсени. Дори firmwares на Android имат достъп до тези инструменти.

    Новите проекти, насочени към аудитории с модерни дистрибуции, могат много добре да се разпространяват в по-модерен формат, като .tar.xz (използвайки формата за компресиране Xz (LZMA), който компресира по-добре от gzip или bzip2), или .7z, което е подобно на форматите на Zip или Rar, тъй като и двете компресират и определят оформление за капсулиране на множество файлове в един файл.

    Не виждате .7z по-често използвана по същата причина, поради която музиката не се продава от онлайн магазините за изтегляне в съвсем нови формати като Opus или видео в WebM. Съвместимост с хора, които работят с древни или много основни системи.


    Имате ли какво да добавите към обяснението? Звукът е изключен в коментарите. Искате ли да прочетете повече отговори от други технологични потребители на Stack Exchange? Вижте пълната тема за дискусия тук.