Obvykle jsem předpokládal, že tar
je komprimační nástroj, ale nejsem si jist, zda skutečně komprimuje soubory, nebo je to jako soubor ISO, soubor pro uložení souborů?
Komentáře
- Také na SuperUser .
Odpověď
Tar je archivační nástroj (Tape ARchive), který pouze shromažďuje soubory a jejich metadata dohromady a vytváří jeden soubor. Pokud chcete tento soubor komprimovat později, můžete použít gzip / bzip2 / xz. Pro větší pohodlí poskytuje tar argumenty pro automatickou kompresi archivu. Další podrobnosti najdete na tar manuálové stránce .
Komentáře
- Mírné vysvětlení k odpovědi. Je to GNU tar, který poskytuje tyto další argumenty komprese. Například tar Solaris neposkytuje argumenty pro kompresi.
- oooh, proto ' proto stále vidím
thing.tar.7z
- BSD tar poskytuje argument i pro kompresi, ale přijímá pouze
z
a určuje metodu komprese na základě rozšíření, zatímco GNU tar má samostatnézZjJ
argumenty pro různé metody komprese. - Prostě si přečtěte stránku BSD tar a ukázalo se, že jsem se mýlil, BSD tar používá samostatné
zZjJ
pro kompresi stejně jako GNU tar. Při dekomprimaci však automaticky detekuje kompresi, zatímco GNU tar očekávázZjJ
pak také. - @wingedsubmariner: no; moderní verze GNU
tar
se dekomprimují automaticky, aniž by vyžadovaly možnosti-zZjJ
.
Answer
tar
vytváří archivy; komprese je samostatná funkce. Nicméně tar
samo o sobě může snížit využití prostoru, pokud je použito u velkého počtu malých souborů, které jsou menší než velikost klastru souborového systému. Pokud souborový systém používá 1 kB klastry, dokonce i soubor, který obsahuje jeden bajt, spotřebuje 1 kB (plus inode). Archiv tar
tuto režii nemá.
BTW, ISO soubor ve skutečnosti není „soubor pro ukládání souborů“ – je to vlastně obraz celého souborového systému (původně vytvořeného pro použití na CD), a jeho struktura je tedy podstatně složitější.
Komentáře
- Ve skutečnosti prázdný soubor nespotřebuje 1 kB. Soubor s velikostí 1–1023 bajtů bude.
- @psusi, takže u souboru s bajty 1–1023 spotřebuje vždy 1024, což má za následek ztrátu 1023–1 bajtů.
Odpověď
Původní příkaz UNIX tar nekomprimoval archivy. Jak bylo zmíněno v komentáři, tar Solaris nekomprimuje. Ani HP-UX, ani AIX, FWIW. Podle konvence nekomprimované archivy končí v .tar
.
S GNU / Linux získáte GNU tar. (GNU tar můžete nainstalovat na jiné systémy UNIX.) Ve výchozím nastavení nekomprimuje; výsledný archiv však nekomprimuje pomocí gzip (také pomocí GNU), pokud zadáte -z
. Konvenční přípona pro soubory gzip je .gz
, takže často uvidíte tarbally (slang pro tar archiv, což obvykle znamená, že byl komprimován), které končí .tar.gz
. Tento konec znamená, že byl spuštěn tar, následovaný gzip, např. tar cf - .|gzip -9v > archive.tar.gz
. Naleznete také archivy končící na .tgz
, např. tar czf archive.tgz .
.
Upravit: www.linfo.org/tar.html mi připomněl, že GNU tar podporuje mnohem více funkcí než pouhou kompresi pomocí gzip, a připomněl mi, že přípony jsou více než obyčejné konvence. Mají zabudovanou sémantiku. Podporuje také bzip2 (-j
pro .bz2
) a starý komprese (-Z
pro .Z
). Pak jsem se podíval na manuálovou stránku a připomněl mi, že -a
automaticky mapuje požadovanou metodu komprese na základě přípony.
Jedna další nit. Jak říká Linuxová manuálová stránka, GNU produkuje informační stránky, nikoli manuálové, takže se o GNU tar dozvíte vše spuštěním info tar
.
Komentáře
- GNU tar stále ' t nezpracovává komprese sám, pouze kanály do / z gzip, bzip2, compress a dalších.
- Podíval jsem se na zdroj . GNU tar zvládá kompresi! Implementace využívá opětovné použití kódu a zdravé architektonické principy uživatelského prostoru UNIX. " Jen potrubí " podceňuje způsob, jakým je komprese pevně integrována do nástroje.Skutečnost, že se to stane u programů pomocných vidlí, je technická záležitost. Pokud chcete bránit " pouze roury, " uveďte názvy souborů a čísla řádků a nechte ' zjistí, na kterou stranu se komunita staví.
- Trvalo několik dní, než jsem mohl tento zdroj zkontrolovat.
Odpovědět
obslužný program tar se nekomprimuje, dokud k tomu nedáte argument [název souboru tar -z].