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ý souhrnsoubory ...
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 doblah.tar.gz
, pak zrušte propojení (odstranění) souborublah.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 souboru
blah.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
adehet
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 dispozici7-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.