Tar (informatika)
Author
Albert Florestar (anglická výslovnost [taː(r)]; akronymická zkratka z tape archiver, páskový archivovač) je souhrnný název jednak pro souborový formát sloužící k uložení mnoha jednotlivých souborů, jednak pro jednoúčelové programy, které s tímto formátem pracují. Formát samotný vznikl v počátcích Unixu a až později byl standardizován v rámci normy POSIX. Původně pomáhal při archivaci souborů na páskových jednotkách, ale později se jeho užívání rozšířilo a dnes je používán všude tam, kde je vhodné pro účely distribuce či archivace sloučit více souborů do jednoho tak, aby se zachovaly informace o adresářové struktuře, přístupových právech a dalších atributech, které běžně souborový systém obsahuje.
Klíčové implementace
V minulosti byl tar implementován na mnoha systémech. Také mnohé archivační programy mají alespoň částečnou podporu formátu tar, používajíce jednu z níže uvedených implementací. +more Historii taru lze shrnout jako příběh nekompatibilit, známý jako tarové války .
Klíčové implementace v chronologickém pořadí:
* Solaris tar, založený na původním taru z UNIXu V7; v Solarisu je implicitní (default). * star (unique standard tape archiver), napsán roku 1982 (autor Jörg Schilling) pod licencí CDDL. +more * GNU tar je implicitní na většině distribucí Linuxu. Vychází z pdtaru vyvíjeného od roku 1987. Jeho současné verze si poradí s vícerem formátů (ustar, pax, GNU a v7). * FreeBSD tar (též BSD tar) se stal implicitním v systémemech založených na BSD, tedy včetně macOSu. Umí automaticky detekovat formát souboru a extrahovat obsah archivů tar, pax, cpio, zip, jar, ar, xar, rpm a ISO 9660 CD-ROM image.
Navíc může většina implementací paxu číst i vytvářet mnoho typů souborů tar.
Struktura
Formát ustar se skládá z 512bajtových bloků. První blok je vždy hlavička (angl. +more Header Block), která nese mimo jiné informaci o názvu a typu souboru (běžný soubor, adresář, symbolický odkaz, apod. ) Původní formát ustar umožňuje uložit soubory s názvy až délky 255 znaků s tím, že celý název musí být rozdělitelný na 155znakový prefix a 100znakový krátký název. Pokud se jedná o běžný soubor, následuje ještě několik datových bloků. Protože velikost souboru nemusí být násobkem 512 bajtů, je poslední datový blok doplněn nulami. Bezprostředně poté následuje další hlavička a případný obsah souboru. Konec archivu je indikován dvěma nulovými bloky (blok se skládá pouze z nul). Všechny informace v hlavičce jsou uvedeny v textové podobě, přičemž čísla jsou vyjádřena v osmičkové soustavě.
název | délka | vysvětlení |
---|---|---|
name | 100 | krátký název souboru |
mode | 8 | oprávnění |
uid | 8 | UID vlastníka |
gid | 8 | GID vlastníka |
size | 12 | velikost souboru v bajtech |
mtime | 12 | čas modifikace souboru |
chksum | 8 | kontrolní součet bloku s hlavičkou |
typeflag | 1 | typ souboru (adresář, běžný soubor, atd. ) |
linkname | 100 | cíl odkazu (v případě, že se jedná o symbolický nebo pevný odkaz) |
magic | 6 | identifikátor verze archivu (např. +more ustar 00) |
version | 2 | identifikátor verze archivu (např. ustar 00) |
uname | 32 | uživatelské jméno a skupina vlastníka |
gname | 32 | uživatelské jméno a skupina vlastníka |
devmajor | 8 | hlavní a vedlejší číslo zařízení (v případě speciálního souboru) |
devminor | 8 | hlavní a vedlejší číslo zařízení (v případě speciálního souboru) |
prefix | 155 | prefix názvu souboru |
padding | 12 | výplň do počátku dalšího bloku |
Přípony archivů a komprese
Ikona pro tar soubory v prostředí KDE Obvykle se pro tarové archivy používá přípona . +moretar. Velmi často jsou ovšem tyto soubory po zpracování tarem ještě předány kompresnímu programu, nejčastěji gzip, bzip2, compress či LZMA a pak se pro indikaci použitého kompresního programu používá dvojitá přípona, tedy například . tar. gz nebo . tar. bz2. Z doby používání souborového systému FAT16, kdy bylo možné používat jen jednu tříznakovou příponu, navíc přežívají zkrácené přípony, například . tgz, . taz či . tlz.
Gzip | . tar. +moregz | . tgz |
---|---|---|
bzip2 | . tar. bz2 | . tbz i . tb2 |
compress | . tar. Z | . taz |
LZMA | . tar. lzma | . tlz |
xz | . tar. xz | . txz |
zstandard | . tar. zst | . tzst |
Běžné verze programu tar (například BSD a GNU) mají přepínače -z (pro gzip) a -j (pro bzip2), při jejichž použití program sám provede hned po zabalení kompresi.
Od verze 1.31 programu GNU tar vydané v lednu 2019 je podporována komprese Zstandard (vyvinul ji Facebook). Lze ji použít přepínačem --zstd.