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
za určuje metodu komprese na základě rozšíření, zatímco GNU tar má samostatnézZjJargumenty 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é
zZjJpro kompresi stejně jako GNU tar. Při dekomprimaci však automaticky detekuje kompresi, zatímco GNU tar očekávázZjJpak také. - @wingedsubmariner: no; moderní verze GNU
tarse 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].