Domovská » jak » Jaká je výhoda použití formátu souboru tar?

    Jaká je výhoda použití formátu souboru tar?


    Formát tar archivace je ve výpočetních letech skutečný Methuselah, přesto je dnes stále těžce využíván. Co dělá formát dehtu tak užitečný dlouho po jeho vzniku?

    Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.

    Otázka

    Reader SuperUser MarcusJ je zvědavý na formát tar a proč jej pořád ještě používáme po všech těch letech:

    Vím, že tar byl vytvořen pro páskové archivy v den, ale dnes máme archivní formáty souborů, které oba agregují soubory a provádějí kompresi ve stejném logickém formátu souboru.

    Otázky:

    • Existuje výkonnostní trest během agregační / kompresní / dekompresní fáze pro použití tar zapouzdřeného v gzip nebo bzip2 ve srovnání s použitím formátu souboru, který agreguje a komprimuje ve stejné datové struktuře? Předpokládejme, že běh porovnávaného kompresoru je stejný (např. Gzip a Deflate jsou podobné).
    • Existují rysy formátu tar souboru, které jiné formáty souborů, jako například .7z a .zip nemají?
    • Vzhledem k tomu, že tar je takový starý formát souborů a novější formáty souborů existují dnes, proč je tar (ať už zapouzdřený v gzip, bzip2 nebo dokonce i v novém formátu xz) ještě dnes tak široce používaný na GNU / Linuxu, Androidu, BSD a dalších takových systémech UNIX operačních systémů, přenosů souborů, stahování programů a binárních stahování a někdy dokonce i ve formátu správce balíčků?

    To je zcela rozumná otázka; tolik se ve světě výpočetní techniky změnilo za posledních třicet let, ale stále používáme formát tar. Jaký je příběh?

    Odpověď

    Příspěvek SuperUser Allquixotic nabízí několik pohledů na dlouhověkost a funkčnost formátu tar:

    Část 1: Výkonnost

    Zde je srovnání dvou samostatných pracovních postupů a toho, co dělají.

    Máte soubor na disku blah.tar.gz což je například 1GB gzip-komprimovaných dat, které při nekomprimované paměti zabírají 2 GB (kompresní poměr 50%).

    Způsob, jakým byste to vytvořili, pokud byste měli provést archivaci a kompresi samostatně, by bylo:

    tar cf blah.tar soubory ... 

    To by vedlo k tomu blah.tar což je pouhý souhrn soubory ...  v nekomprimované podobě.

    Pak byste to udělali

    gzip blah.tar 

    To by přečetlo obsah blah.tar z disku, komprimujte je pomocí gzip kompresního algoritmu, napište obsah do blah.tar.gz, pak zrušte propojení (odstranění) souboru blah.tar.

    Teď se dekomprimujeme!

    Cesta 1

    Ty máš blah.tar.gz, tak či onak.

    Rozhodnete se spustit:

    gunzip blah.tar.gz 

    Tohle bude

    • Přečtěte si 1 GB komprimovaných datových obsahů blah.tar.gz.
    • PROCESS komprimovaných dat prostřednictvím gzip dekompresor v paměti.
    • Vzhledem k tomu, že paměťová vyrovnávací paměť se naplní daty typu "blok", zapište nekomprimované údaje do souborublah.tar na disku a opakujte, dokud nebudou přečteny všechny komprimované údaje.
    • Odpojit (odstranit) soubor blah.tar.gz.

    Nyní máte blah.tar na disk, který je nekomprimovaný, ale obsahuje jeden nebo více souborů v něm, s velmi nízkou strukturou dat. Velikost souboru je pravděpodobně pár bajtů větší než součet všech dat souborů.

    Spustíte:

    tar xvf blah.tar 

    Tohle bude

    • Přečtěte si 2 GB nekomprimovaných datových obsahů blah.tar a dehet datové struktury formátu souboru, včetně informací o oprávněních souborů, názvech souborů, adresářích atd.
    • WRITE na disk 2 GB dat plus metadata. Jedná se o: převedení informací o struktuře dat / metadat do vytváření nových souborů a adresářů na disku podle potřeby nebo přepisování existujících souborů a adresářů s novým obsahem dat.

    Úplné údaje jsme ČÍST z disku v tomto procesu byl 1GB (pro gunzip) + 2GB (pro tar) = 3GB.

    Úplné údaje jsme WROTE na disk v tomto procesu byl 2 GB (pro gunzip) + 2 GB (pro tar) + několik bajtů pro metadata = asi 4 GB.

    Cesta 2

    Ty máš blah.tar.gz, tak či onak.

    Rozhodnete se spustit:

    tar xvzf blah.tar.gz 

    Tohle bude

    • Přečtěte si 1 GB komprimovaných datových obsahů blah.tar.gz, bloku najednou, do paměti.
    • PROCESS komprimovaných dat prostřednictvím gzip dekompresor v paměti.
    • Jakmile se paměťová vyrovnávací paměť doplní, bude to trubka data, v paměti, až do dehet analyzátor formátu souboru, který bude číst informace o metadatech apod. a nekomprimované soubory.
    • Jak se paměťová vyrovnávací paměť doplňuje do paměti dehet analyzátor souborů, zapíše nekomprimované údaje na disk, vytváří soubory a adresáře a naplňuje je nekomprimovaným obsahem.

    Úplné údaje jsme ČÍST z disku v tomto procesu byl 1 GB komprimovaných dat, období.

    Úplné údaje jsme WROTE na disk byl v tomto procesu 2 GB nekomprimovaných dat + několik bajtů pro metadata = asi 2 GB.

    Pokud si všimnete, množství disk I / O v Cesta 2 je identické na disk I / O provedené, řekněme, Zip nebo7-Zip programy, které upravují rozdíly v kompresním poměru.

    A pokud je kompresní poměr váš problém, použijte Xz kompresor pro zapouzdření dehet, a máte archiv TAR LZMA2'ed, který je stejně efektivní jako nejpokročilejší algoritmus, který je k dispozici 7-Zip :-)

    Část 2: Funkce

    dehet ukládá oprávnění UNIX v rámci svých souborů metadat a je velmi dobře známá a testována pro úspěšné zabalení adresáře se všemi různými oprávněními, symbolickými odkazy atd. Existuje více než jen několik případů, kdy by člověk mohl potřebovat, aby spoustu souborů do jediný soubor nebo proud, ale nemusí to nutně komprimovat (i když komprese je užitečná a často se používá).

    Část 3: Kompatibilita

    Mnoho nástrojů je distribuováno ve zdrojové nebo binární podobě jako .tar.gz nebo .tar.bz2, protože je to soubor s nejnižším společným jmenovatelem: stejně jako většina uživatelů Windows má přístup k dekompresorům .zip nebo .rar, většině instalací Linuxu, dokonce i ty nejzákladnější, budou mít přístup k nejméně dehtu a gunzipu, bez ohledu na to, jak starý nebo vybočený. Dokonce i firmware systému Android mají přístup k těmto nástrojům.

    Nové projekty zaměřené na publikum s moderními distribucemi mohou velmi dobře distribuovat v modernějším formátu, jako je .tar.xz (pomocí kompresního formátu Xz (LZMA), který komprimuje lépe než gzip nebo bzip2) nebo .7z, který je podobný formáty souborů Zip nebo Rar v tom, že oba komprimuje a určuje rozvržení pro zapouzdření více souborů do jednoho souboru.

    Nevidíte .7z se používá častěji ze stejného důvodu, že hudba není prodávána z internetových obchodů ke stažení v zcela nových formátech jako je Opus nebo video v WebM. Kompatibilita s lidmi používajícími staré nebo velmi základní systémy.


    Musíte něco přidat k vysvětlení? Vypadněte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.