Какво е предимството на използването на 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? Вижте пълната тема за дискусия тук.