Komprimuje tar soubory skutečně nebo je jen seskupuje?

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

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].

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *