Formát archivu TAR
Formát archivu tar nabízí spolehlivý způsob ukládání souborů. Zachovává původní data bajt po bajtu a na začátek přidává 512 bajtové záhlaví. Velikosti souborů jsou také upraveny tak, aby se úhledně vešly do 512bajtových bloků. Zajímavé je, že hlavička obsahuje vestavěný kontrolní součet pro detekci chyb. Zatímco standardní nástroj tar může přeskočit poškozená záhlaví (a následně související soubory), bude pokračovat ve zpracování zbytku archivu a zajistí, že budete mít stále přístup k nepoškozeným souborům.
Informace o archivu TAR
Formát souboru tar, zkratka pro „tape archive“, je vytvořen obslužným programem tar v systémech UNIX. Slouží jako archiv pro sdružování souborů pro úkoly, jako je zálohování nebo distribuce. Na rozdíl od komprimovaných archivních formátů ukládají soubory tar více souborů, také známých jako tarball, v nekomprimovaném formátu spolu s metadaty o archivu. Přestože samotné soubory tar nejsou komprimovány, lze je komprimovat pomocí nástrojů jako gzip nebo bzip2 pro efektivní ukládání a přenos.
Protože samotný formát souboru tar neobsahuje vestavěnou kompresi, jsou archivy tar často komprimovány pomocí externích nástrojů, jako je gzip, bzip2, XZ (s využitím kompresních algoritmů 7-Zip / p7zip LZMA / LZMA2), Brotli, Zstandard a podobné nástroje. Tato komprese pomáhá zmenšit velikost archivu pro snazší přenositelnost a efektivní zálohování dat. Komprimované soubory, které jsou výsledkem tohoto procesu, mohou mít jednoduché přípony jako tgz, tbz, txz, tzst nebo dvojité přípony jako tar.gz, tar.br, tar.bz2, tar.xz, tar.zst.
Vývoj formátu archivu TAR
Formát archivu tar se postupem času vyvíjel. Nové funkce přidané do obslužného programu tar od 80. let vedly k rozšíření formátu, která obsahují další informace pro vylepšenou funkčnost. Dřívější formáty tar postrádaly konzistenci v tom, jak byla uložena číselná pole, ale to bylo řešeno v pozdějších verzích, aby se zlepšila přenositelnost. Toto vylepšení začalo prvním standardem POSIX pro formáty tar v roce 1988.
POSIX.1 2001 zavedl formát „extended tar“ (také známý jako tar.h nebo pax). Tento formát je nejflexibilnější a zahrnuje funkce z jiných specifikací tar. Umožňuje prodejcům přidávat vlastní funkce pomocí značek. Zatímco dokumentace zdůrazňuje, že ne všechny implementace tar zvládnou tento formát dokonale, jeho design zajišťuje, že jakýkoli nástroj schopný číst archivy „ustar“ může číst také většinu archivů „posix“. Navíc POSIX.1 2001 odstranil předchozí omezení velikosti souboru 8 GB pro archivy tar.
Struktura TAR
Archiv TAR je ve svém jádru posloupnost datových bloků. Tyto bloky pevné velikosti 512 bajtů každý jsou uspořádány lineárně. Pro označení konce archivu jsou dva po sobě jdoucí bloky vyplněné nulami.
Při logickém pohledu je však archiv TAR sérií záznamů souborů. Každý záznam se skládá z více bloků, přičemž první blok je vždy záhlavím záznamu. Zbývající bloky ukládají skutečný obsah souboru.
Uvnitř záhlaví záznamu
Záhlaví záznamu funguje jako plán pro každý soubor v archivu. Obsahuje následující informace
- Název souboru (100 bajtů): Název souboru uloženého v této položce.
- Oprávnění k souboru (8 bajtů): Oprávnění pro přístup k souboru, reprezentované jako osmičkový řetězec.
- ID vlastníka (8 bajtů): Číselné uživatelské ID vlastníka souboru (osmičkový formát).
- ID skupiny (8 bajtů): Číselné ID skupiny vlastníka souboru (osmičkový formát).
- Velikost souboru (12 bajtů): Velikost souboru v osmičkovém formátu.
- Čas poslední úpravy (12 bajtů): Osmičkové časové razítko poslední úpravy souboru.
- Kontrolní součet (8 bajtů): Hodnota kontrolního součtu používaná k ověření integrity dat záhlaví.
- Typ souboru (1 byte): Označuje typ uloženého souboru (běžný soubor, pevný odkaz nebo symbolický odkaz).
- Název odkazovaného souboru (proměnná délka): Pokud je záznam odkazem (pevným nebo symbolickým), v tomto poli je uložen název propojeného souboru.
Výhody tohoto formátu
- Versatility - TAR je všestranný formát schopný uložit více souborů a adresářů do jednoho archivního souboru, takže je vhodný pro různé potřeby zálohování a distribuce.
- Zachování atributů souboru TAR zachovává důležité atributy souborů, jako jsou oprávnění, vlastnictví a časová razítka, čímž zajišťuje, že si archivovaná data zachovají svou integritu a použitelnost.
- Jednoduchost - Struktura souborů TAR je jednoduchá a přímočará, takže se s nimi snadno pracuje a zpracovávají. To zjednodušuje programování a automatizaci úloh souvisejících s archivy TAR.
Operace podporované archivem TAR
Aspose.ZIP umožňuje uživateli extrahovat buď konkrétní položku nebo celý archiv. Pro Aspose.ZIP for .NET Můžete použít TarArchiveClass k otevření souboru .tar.gz a poté iterovat jeho záznamy a extrahovat je do požadovaného umístění. Pro Aspose.ZIP pro Java Podobný přístup pomocí TarArchive k otevření souboru .tar.gz a extrahování položek.
TAR-file - Vnitřní struktura
Soubory segmentů ukládají nezpracovaná data o segmentu. Přestože existují různé typy segmentů, soubory TAR rozlišují pouze mezi datovými a hromadnými segmenty. Hromadné segmenty se přímo ukládají “tak, jak jsou” v souboru TAR.
Datové segmenty jsou však zkoumány za účelem nalezení odkazů na jiné segmenty nebo nezpracovaný binární obsah. Tyto odkazy jsou jednoduše uloženy jako seznam jedinečných identifikátorů (UUID) v datovém segmentu. Odkazované segmenty mohou být umístěny buď v aktuálním souboru TAR, nebo externě.
Interní odkazy lze nalézt kontrolou indexu souboru TAR. Externí odkazy vyžadují externí nástroj k nalezení segmentu v jiném souboru TAR. Seznam odkazovaných segmentů v datovém segmentu je uložen v souboru grafu pro rychlejší vyhledávání. Tento seznam je uspořádaný tak, aby optimalizoval proces vyhledávání.
Vnitřní struktura archivu
- Metadata souboru - Podobně jako archiv tar, každý soubor ukládá základní informace, jako je čas úpravy a oprávnění. Tato část je však flexibilní a umožňuje vynechat nebo zahrnout další podrobnosti, jako jsou seznamy řízení přístupu (ACL) nebo rozšířené atributy (EA), na základě vašich potřeb. Pro zajištění integrity dat se doporučuje zahrnout silnou hashovací funkci (jako SHA1) pro běžné soubory.
- Více toků obsahu - Na rozdíl od tradičních archivů mohou mít soubory ve vnitřním datovém souboru více než jeden datový tok. To je užitečné pro ukládání rozšířených atributů nebo větví prostředků spojených se souborem.
- Záhlaví - Vnitřní indexový soubor obsahuje záhlaví souborů, která zrcadlí ty, které jsou rozptýleny ve vnitřním datovém souboru. Ale pokud jsou uloženy odděleně, záhlaví indexu musí odkazovat na počáteční pozici jejich odpovídajících dat v datovém souboru. Kromě toho položky adresáře v indexu vypisují obsažené soubory a jejich odpovídající offsety v rámci vnitřního indexu souborů.
- Odůvodnění duplicitních metadat - Tato volba designu zajišťuje efektivní streamování/dekódování dat a náhodný přístup k souborům. Navíc se metadata dobře komprimují, což vede k minimální režii úložiště. Testy ukazují, že metadata obvykle zabírají méně než 0,3 % úložného prostoru, takže kompromis se vyplatí.
- Záhlaví bloků - Záhlaví bloků, podobně jako vnější soubor, obsahuje informace o velikosti bloku a unikátní sekvenci identifikátorů.
Příklady použití TAR
Aspose.ZIP API umožňuje extrahovat archivy ve vašich aplikacích bez potřeby dalších aplikací třetích stran. Aspose.ZIP API poskytuje třídu TarArchive pro práci s archivy TAR.
Add entries to existing TAR archive via C#
All you need to do is open archive for extraction and add entry to archive .
using (TarArchive archive = new TarArchive(“existing.tar”))
{
archive.CreateEntry("one_more.bin", “data.bin”);
archive.Save(“added.tar”);
}
Delete entries from existing TAR archive via .net
Entries of tar archive can be deleted with similar DeleteEntry methods.
using (var archive = new TarArchive("two_files.tar"))
{
archive.DeleteEntry(0);
archive.Save("single_file.tar");
}
Add files to TAR archive without compression
Tar is a file archival format used to group multiple files and directories into a single archive file without compression , unlike formats like ZIP, RAR and others. To create a tar archive without specifying any compression settings, simply use a TarArchive instance.
using (FileStream tarFile = File.Open("joint.tar", FileMode.Create))
{
FileInfo fi1 = new FileInfo("text.txt");
FileInfo fi2 = new FileInfo("picture.png");
using (TarArchive archive = new TarArchive())
{
archive.CreateEntry("text.txt", fi1);
archive.CreateEntry("picture.png", fi2);
archive.Save(tarFile);
}
}
Další informace o archivech TAR
Lidé se ptali
1. Co je archiv TAR?
Archiv TAR, zkratka pro Tape Archive, je formát souboru používaný ke spojení více souborů a adresářů do jednoho archivního souboru bez komprese. Běžně se používá pro účely zálohování a distribuce v systémech založených na Unixu.
2. Jaké jsou výhody archivů TAR?
TAR se může pochlubit univerzálností, protože je kompatibilní s většinou operačních systémů a archivačních programů, což usnadňuje bezproblémové sdílení a výměnu dat napříč různými platformami. Jeho jednoduchost spočívá v přímočaré struktuře archivů TAR, která umožňuje snadné vytváření, extrakci a manipulaci se soubory. Navíc TAR nabízí efektivitu tím, že umožňuje kompresi pomocí externích nástrojů, jako je gzip nebo bzip2, což uživatelům umožňuje zmenšit velikost souboru a šetřit úložný prostor a šířku pásma během přenosu dat.
3. Jaká jsou některá omezení archivů TAR?
Zatímco TAR je všestranný formát souborů běžně používaný pro archivaci a distribuci souborů v systémech založených na Unixu, přichází s určitými omezeními, kterých je třeba si být vědom. Za prvé, TAR postrádá vestavěné možnosti komprese, což znamená, že ke zmenšení velikosti souborů budete potřebovat další nástroje, jako je gzip nebo bzip2. Za druhé, archivy TAR nenabízejí funkce nativního šifrování, takže pokud požadujete zabezpečení dat, budete se muset spolehnout na externí nástroje pro ochranu heslem. A konečně, TAR má omezenou podporu pro zachování atributů souborů, jako jsou časová razítka a oprávnění z původních souborů, což může ovlivnit integritu archivovaných dat.