If-Koubou

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

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


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

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

Въпроса

Reader на SuperUser MarcusJ е любопитен за формата на катран и защо продължава да го използва след всички тези години:

Знам, че катранът е направен за ленти архиви през деня, но днес имаме архивни файлови формати, които обединяват файлове и изпълняват компресия в същия логически файлов формат.

въпроси:

  • Има ли наказание за ефективността по време на етапите на агрегиране / компресия / декомпресия за използване на капсулиран в gzip или bzip2 тар, в сравнение с използването на файлов формат, който обединява и компресира в една и съща структура от данни? Да приемем, че времето на изпълнение на компресора, което се сравнява, е идентично (например gzip и Deflate са подобни).
  • Има ли функции на файла с формат tar, че други файлови формати, като например .7z и .zip, нямат?
  • Тъй като катранът е такъв стар формат на файла и по-новите файлови формати съществуват днес, защо е тарг (независимо дали е капсулиран в gzip, bzip2 или дори в новия xz) все още толкова широко използван днес в GNU / Linux, Android, BSD и други UNIX операционни системи, за прехвърляне на файлове, изтегляне на програми и бинарни файлове, а понякога и като формат за мениджър на пакети?

Това е съвсем разумен въпрос; толкова много се е променило в изчислителния свят през последните тридесет години, но все още използваме формата на катран. Каква е историята?

Отговорът

Сътрудникът на SuperUser Allquixotic предлага известно разбиране за дълголетието и функционалността на формата на катран:

Част 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 

Това ще

  • ПРОЧЕТЕТЕ съдържанието на 1GB компресирани данни отblah.tar.gz.
  • Процедирайте компресираните данни презсофтуерна декомпресор в паметта.
  • Тъй като буферът за паметта се запълва с данни за "блок", ПИСМИ некомпресираните данни във файлаblah.tar на диска и повторете, докато не се прочетат всички компресирани данни.
  • Прекратяване на връзката (изтриване) на файлаblah.tar.gz.

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

Ти бягаш:

tar xvf blah.tar 

Това ще

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

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

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

Път 2

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

Решавате да изпълните:

tar xvzf blah.tar.gz 

Това ще

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

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

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

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

И ако съотношението на компресия е вашето притеснение, използвайтеXZ компресор за капсулиранекатран, и имате LZMA2'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? Вижте цялата тема на дискусията тук.