Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, skupín webových stránok týkajúcich sa otázok a odpovedí.
Otázka
Reader SuperUser MarcusJ je zvedavý o formáte tar a prečo ho stále používame po všetkých týchto rokoch:
I know that tar was made for tape archives back in the day, but today we have archive file formats that both aggregate files and perform compression within the same logical file format.
Questions:
- Is there a performance penalty during the aggregation/compression/decompression stages for using tar encapsulated in gzip or bzip2, when compared to using a file format that does aggregation and compression in the same data structure? Assume the runtime of the compressor being compared is identical (e.g. gzip and Deflate are similar).
- Are there features of the tar file format that other file formats, such as.7z and.zip do not have?
- Since tar is such an old file format, and newer file formats exist today, why is tar (whether encapsulated in gzip, bzip2 or even the new xz) still so widely used today on GNU/Linux, Android, BSD, and other such UNIX operating systems, for file transfers, program source and binary downloads, and sometimes even as a package manager format?
To je úplne rozumná otázka; toľko sa zmenilo vo výpočtovom svete za posledných tridsať rokov, ale stále používame formát tar. Aký je príbeh?
Odpoveď
Sprostredkovateľ SuperUser Allquixotic ponúka niekoľko informácií o dlhovekosti a funkčnosti formátu tar:
Part 1: Performance
Here is a comparison of two separate workflows and what they do.
You have a file on disk
blah.tar.gz
čo je napríklad 1 GB gzip-komprimovaných dát, ktoré pri nekomprimovanom zaberajú 2 GB (kompresný pomer 50%).
Spôsob, akým by ste to vytvorili, ak by ste robili archiváciu a kompresiu samostatne, by boli:
tar cf blah.tar files …
To by malo za následok
blah.tar
čo je iba agregácia
files …
v nekomprimovanej forme.
Potom by ste to urobili
gzip blah.tar
Toto by si prečítal obsah
blah.tar
z disku, komprimovať ich pomocou gzip kompresného algoritmu, napísať obsah do
blah.tar.gz
potom odpojte (odstráňte) súbor
blah.tar
Teraz, dekomprimujte!
Cesta 1
Máš
blah.tar.gz
Tak či tak.
Rozhodli ste sa spustiť:
gunzip blah.tar.gz
Toto bude
-
ČÍTAJTE komprimované dáta s obsahom 1 GB
blah.tar.gz
-
PROCESS komprimovaných dát cez
gzip
dekompresor v pamäti.
-
Keď pamäťová vyrovnávacia pamäť vyplní údaje typu "blok", nahrajte nekomprimované údaje do súboru
blah.tar
na disk a opakujte, kým sa neprečítajú všetky komprimované údaje.
-
Odpojiť (odstrániť) súbor
blah.tar.gz
Teraz máte
blah.tar
na disku, ktorý je nekomprimovaný, ale obsahuje jeden alebo viac súborov v rámci tohto systému s veľmi nízkou štruktúrou údajov. Veľkosť súboru je pravdepodobnepár bajtov väčšia ako súčet všetkých údajov súboru.
Bež:
tar xvf blah.tar
Toto bude
-
ČÍTAJTE 2 GB nekomprimovaných dátových obsahov
blah.tar
a
tar
dátové štruktúry formátu súboru vrátane informácií o oprávneniach súborov, názvoch súborov, adresároch atď.
- WRITE na disk 2 GB dát plus metadáta. Toto zahŕňa: prekladanie informácií o štruktúre údajov / metadáta do vytvárania nových súborov a adresárov na disku podľa potreby alebo na prepisovanie existujúcich súborov a adresárov s novým obsahom údajov.
Celkové údaje sme READ z disku v tomto procese bol 1 GB (pre gunzip) + 2 GB (pre decht) = 3 GB.
Celkové údaje sme NAPÍSALI na disk v tomto procese bola 2 GB (pre gunzip) + 2 GB (pre tar) + niekoľko bajtov pre metadáta = asi 4 GB.
Cesta 2
Máš
blah.tar.gz
Tak či tak.
Rozhodli ste sa spustiť:
tar xvzf blah.tar.gz
Toto bude
-
ČÍTAJTE komprimované dáta s obsahom 1 GB
blah.tar.gz
blok v čase, do pamäte.
-
PROCESS komprimovaných dát cez
gzip
dekompresor v pamäti.
-
Keď sa pamäťová vyrovnávacia pamäť naplní, bude to rúra tieto údaje, v pamäti až po
tar
analyzátor formátu súboru, ktorý bude čítať informácie o metadátach atď. a údaje o nekomprimovaných súboroch.
-
Keď sa vyrovná pamäťová vyrovnávacia pamäť
tar
analyzátor súborov, zapíše nekomprimované dáta na disk, vytvára súbory a adresáre a naplňuje ich nekomprimovaným obsahom.
Celkové údaje sme READ z disku v tomto procese bolo 1 GB komprimovaných dát, obdobie.
Celkové údaje sme NAPÍSALI na disk v tomto procese bolo 2 GB nekomprimovaných údajov + niekoľko bajtov pre metadáta = asi 2 GB.
Ak si všimnete, množstvo diskov I / O v Cesta 2 jeidentický na disk I / O vykonávané, povedzme,
Zip
alebo
7-Zip
programov, ktoré upravujú rozdiely v kompresnom pomere.
A ak je kompresný pomer váš problém, použite
Xz
kompresor na zapuzdrenie
tar
a máte archív TAR LZMA2'ed, ktorý je rovnako efektívny ako najmodernejší algoritmus, ktorý je k dispozícii
7-Zip
:-)
Časť 2: Funkcie
tar
ukladá povolenia UNIXu v rámci súborových metadát a je veľmi dobre známy a testovaný na úspešné zabalenie adresára so všetkými druhmi rôznych oprávnení, symbolických odkazov atď. Existuje viac ako niekoľko prípadov, kedy je možno potrebné globálne zväčšiť množstvo súborov jediný súbor alebo prúd, ale nemusí to nevyhnutne komprimovať (aj keď kompresia je užitočná a často sa používa).
Časť 3: Kompatibilita
Mnoho nástrojov sa distribuuje v zdrojovej alebo binárnej forme ako.tar.gz alebo.tar.bz2, pretože ide o formát súboru s najnižším spoločným menovateľom: podobne ako väčšina používateľov systému Windows má prístup k dekompresorom.zip alebo.rar, väčšina inštalácií Linuxu, dokonca aj tie najzákladnejšie, budú mať prístup k najmenej dechtu a streľbe, bez ohľadu na to, ako starý alebo klesol. Dokonca aj firmvér systému Android má prístup k týmto nástrojom.
Nové projekty zamerané na publikum používajúce moderné distribúcie môžu veľmi dobre distribuovať v modernejšom formáte, napríklad.tar.xz (pomocou formátu kompresie Xz (LZMA), ktorý komprimuje lepšie ako gzip alebo bzip2), alebo.7z, ktorý je podobný formáty súborov Zip alebo Rar v tom, že oba komprimuje a špecifikuje rozloženie pre zapuzdrenie viacerých súborov do jedného súboru.
Nevidíte.7z používané častejšie z rovnakého dôvodu, že hudba sa nepredáva z online predajní v úplne nových formátoch, ako je Opus alebo video v WebM. Kompatibilita s ľuďmi, ktorí používajú staré alebo veľmi základné systémy.
Máte niečo doplniť vysvetlenie? Zvuk vypnúť v komentároch.Chcete si prečítať viac odpovedí od iných používateľov technológie Stack Exchange? Pozrite sa na celý diskusný príspevok tu.