Co je dehet? Tar je zkratka pro „tape archive“ a odkazuje na praxi z dřívějších dnů výpočetní techniky, kdy byla data zálohována na pásky. Navzdory nostalgickému původu názvu je tar velmi výkonný a využívá moderní technologie k archivaci a kompresi souborů.
Obnovte základy:Archiv vs komprese
Příkaz tar je pro uživatele Linuxu důležitý, aby mu rozuměli. Než se dostaneme příliš hluboko do tématu, začněme s malým objasněním.
- Archivace – Akt ukládání více souborů jako jednoho souboru.
- Komprese – zmenšení většího souboru nebo souborů.
Tar je archivační nástroj. Vytváří jeden soubor z více souborů. To šetří šířku pásma sítě, čas a výpočetní výkon při přenosu souborů. Jeden soubor o velikosti 100 MB zabere mnohem méně než přenos 100 souborů o velikosti 1 MB kvůli režii souboru.
To je důvod, proč často najdete software dostupný v „tarballu ‘. Tarball je běžný termín používaný pro soubor tar.
I když tar sám o sobě nemůže komprimovat soubory, můžete ke komprimaci souborů při vytváření tarballu použít jeden z běžných kompresních algoritmů. Ukážu vám, jak to udělat později v tomto základním tar tutoriálu.
Běžné soubory tar
Zde jsou některé z běžných „souborů tar“, které najdete:
.Tar :Toto je soubor tarball. Je to pouze archiv a neprovádí se žádná komprimace.
.Tar.Gz nebo .tgz :Toto je rozšíření archivu, který byl komprimován pomocí Gzip.
.Tar.Bz2 nebo .tbz :Toto je rozšíření archivu, který byl komprimován pomocí Bz2. Jedná se o relativně novou technologii. Vyznačuje se vyšším poměrem komprese, ale tato zvýšená smršťovací síla znamená, že dokončení trvá o něco déle.
.Tar.xz nebo .txz atd. :Tar také obsahuje integrovanou podporu pro xz, lzip a další. Tyto nástroje primárně používají stejný kompresní algoritmus LZMA. Populární 7z, který se stal poměrně běžným v prostředí Windows, také používá tento algoritmus. Další rozdíly v souborech vyplývají ze struktury a metadat. Nebudu zabíhat do těchto podrobností v našich příkladech, ale chtěl jsem je zmínit.
Je důležité si uvědomit, že rozšíření nejsou nutná na Linuxu a dalších unixových systémech. Váš unixový systém obvykle dokáže identifikovat soubory podle jejich záhlaví bez ohledu na příponu, ale použití běžného schématu pojmenování může pomoci vyhnout se nejasnostem. Chcete-li zjistit typ souboru, můžete použít příkaz file v Linuxu.
Příklady příkazů Tar
V tomto článku chci demonstrovat některé běžné metody archivace a komprimace souborů pomocí tar.
Ve složce Dokumenty jsem shromáždil několik souborů různých typů. Existují obrázky a některé textové soubory. Na několika příkladech se podíváme na to, jak se velikost souboru mění kompresí.
Zde je úplný seznam dokumentů, které budou použity.
[email protected]:~/Documents$ ll
total 7404
drwxr-xr-x 2 christopher christopher 4096 May 5 10:55 ./
drwxr-xr-x 17 christopher christopher 4096 May 5 10:59 ../
-rw-r--r-- 1 christopher christopher 5094932 Apr 30 23:54 aerial-view-of-bushes-on-sand-field-3876435.jpg
-rw-r--r-- 1 christopher christopher 13268 Apr 30 23:57 lorem1.txt
-rw-r--r-- 1 christopher christopher 13268 Apr 30 23:57 lorem2.txt
-rw-r--r-- 1 christopher christopher 13268 Apr 30 23:57 lorem3.txt
-rw-r--r-- 1 christopher christopher 13268 Apr 30 23:56 lorem.txt
-rw-r--r-- 1 christopher christopher 2411919 Apr 30 23:54 mountain-range-2397645.jpg
Už jsem se dotkl schopností dehtu. Je to mocný nástroj se spoustou možností. Různé možnosti a typy souborů mohou způsobit, že příkaz bude vypadat složitější, než ve skutečnosti je. Jako vždy je mým cílem demystifikovat příkazový řádek. Než tedy zkombinujeme několik možností v příkladech, rozdělme si věci na menší kousky.
Zde je tabulka běžně používaných možností. Pamatujte, že toto je jen začátek. Doporučuji, abyste si sami prošli dokumentaci nápovědy, abyste našli ještě více možností, až se budete cítit pohodlně.
Přepnout | Rozsáhlé možnosti | Popis |
---|---|---|
-c, | –vytvořit | vytvořit nový archiv |
-d, | –diff, –compare | najít rozdíly mezi archivem a systémem souborů |
-r, | –připojit | připojit soubory na konec archivu |
-t, | –seznam | seznam obsahu archivu |
-u, | –aktualizace | připojujte pouze soubory novější než kopie v archivu |
-x, | –extrahovat, –get | rozbalit soubory z archivu |
-j, | –bzip2 | filtrovat archiv přes bzip2 |
-z, | –gzip, –gunzip, –ungzip | filtrujte archiv přes gzip |
1) Vytvořte tarball
Dříve jsem zmínil běžné typy souborů spojené s příkazem tar. Toto je možná nejzákladnější.
tar cvf output_tarball.tar source_directory
Komprese nebude použita, takže soubor bude zabírat alespoň tolik místa jako soubory ve složce dokumentů.
[email protected]:~$ tar cvf doc.tar ~/Documents
tar cvf (create, verbose, file-archive):vytvoří nový soubor tar s názvem doc.tar ze všech souborů v ~/Documents.
[email protected]:~$ ll doc.tar
-rw-r--r-- 1 christopher christopher 7567360 May 5 11:00 doc.tar
Pamatujte, že tarball bude mít stejnou adresářovou strukturu jako váš zdrojový adresář tarballu.
2) Vytvořte gzip tarball
Vyzkoušejte kompresi gzip při vytváření tarballu.
[email protected]:~$ tar cvzf doc.tar.gz ~/Documents
tar cvzf (create, verbose, g-zip, file-archive):vytvoří nový tar soubor s názvem doc.tar.gz ze všech souborů v ~/Documents. Při vytváření tarballu používá kompresi gzip (s možností z).
[email protected]:~$ ll doc.tar.gz
-rw-r--r-- 1 christopher christopher 7512498 May 5 11:01 doc.tar.gz
Jak můžete vidět, velikost gzipovaného tarballu je o 54 862 bajtů (53 MB) méně než normální nekomprimovaný tarball.
Věnujte pozornost používání spojovníku – s možnostmi tar
Obvykle, když používáte volby s příkazem Linuxu, přidáte před volby pomlčku (-).
Pomlčka před možnostmi není povinná a je lepší se jí vyhnout. Proto jsem to v příkladech nepoužil.
Pokud použijete pomlčku před možnostmi, měli byste vždy ponechat f na konci možností. Pokud použijete tar -cvfz, z se stane argumentem pro volbu z. A pak uvidíte chybu, jako je tato:
tar:doc.tar.gz:Nelze stat:Žádný takový soubor nebo adresář
Proto je dobrým zvykem používat možnost f na konci všech ostatních možností, takže i když pomlčku použijete ze zvyku, nezpůsobí to problém.
3) Vytvořte tarball bz2
Řekněme, že chcete vytvořit tarball bz2. Kroky jsou stejné jako předchozí. Stačí změnit volbu z (gzip) na j (bz2). Podívejte se na tabulku možností, kterou jsem zmínil dříve.
[email protected]:~$ tar cvjf doc.tar.bz2 ~/Documents
tar cvfj (create, verbose, bz2 type, file-archive).
[email protected]:~$ ll doc.tar.bz2
-rw-r--r-- 1 christopher christopher 7479782 May 5 11:04 doc.tar.bz2
Všimněte si velikosti? Je to ještě méně než gzipovaný tarball.
4) Seznam obsahu tarballu
Můžete použít -t
volba (místo -c) pro zobrazení obsahu archivního souboru. Funguje to stejně, ať je soubor komprimovaný nebo ne. Zobrazí se aktuální velikost souboru, nikoli komprimovaná velikost.
[email protected]:~$ tar tvf doc.tar
drwxr-xr-x christopher/christopher 0 2020-05-05 10:55 home/christopher/Documents/
-rw-r--r-- christopher/christopher 5094932 2020-04-30 23:54 home/christopher/Documents/aerial-view-of-bushes-on-sand-field-3876435.jpg
-rw-r--r-- christopher/christopher 13268 2020-04-30 23:57 home/christopher/Documents/lorem1.txt
-rw-r--r-- christopher/christopher 13268 2020-04-30 23:56 home/christopher/Documents/lorem.txt
-rw-r--r-- christopher/christopher 2411919 2020-04-30 23:54 home/christopher/Documents/mountain-range-2397645.jpg
-rw-r--r-- christopher/christopher 13268 2020-04-30 23:57 home/christopher/Documents/lorem3.txt
-rw-r--r-- christopher/christopher 13268 2020-04-30 23:57 home/christopher/Documents/lorem2.txt
5) Přidat další soubory do tarballu
Soubory můžete připojit k archivu tarball pomocí -r
. Nemůžete přidávat soubory do komprimovaného archivu, aniž byste je nejprve rozbalili pomocí příkazu tar.
Můžete také připojit pomocí -u
možnost aktualizace. Tato možnost má pouze přidat nové soubory podle nápovědy, ale v mé praxi to fungovalo stejně jako připojení, přidání nových kopií všech souborů.
[email protected]:~$ tar rvf doc.tar ~/Documents/
6) Extrahujte tarball
Nyní, když jste viděli, jak různé typy komprese ovlivňují celkovou velikost souboru, pojďme se podívat na extrahování těchto souborů.
[email protected]:~$ cd docs
[email protected]:~/docs$ tar xvf ~/doc.tar.gz
Přešel jsem do nového adresáře s názvem docs. Potom jsem použil tar xvf (extract, verbose, file-archive) k rozbalení obsahu zde.
[email protected]:~/docs/home/christopher/Documents$ ls
aerial-view-of-bushes-on-sand-field-3876435.jpg lorem1.txt lorem2.txt lorem3.txt lorem.txt mountain-range-2397645.jpg
Je důležité si uvědomit, že tar zachovává strukturu souborů, takže když extrahuji soubory, jsou v /home/christopher/Documents. Abyste tomu zabránili, můžete se přepnout do požadovaného adresáře (~/Documents) a zkopírovat všechny soubory pomocí zástupného znaku * namísto adresářové struktury.
7) Extrahujte tarball do konkrétního adresáře
Ve výchozím nastavení je obsah tarballu extrahován do aktuálního adresáře. To není vždy žádoucí.
Tarball můžete extrahovat do konkrétního adresáře následujícím způsobem:
tar xvf tar_file -C destination_directory
Cílový adresář musí existovat, takže se ujistěte, že jste jej předem vytvořili pomocí příkazu mkdir.
Shrnutí
Zde je to, co musíte mít na paměti při používání tar v Linuxu:
Téměř vždy se používá ve formátu tar cf nebo tar xvf. Pamatujte si toto:
- c znamená vytvořit:Používáte jej k vytvoření tarballu
- x znamená extrakt:Používáte jej k extrahování tarballu
- f znamená soubor:Používáte jej pro název souboru tar (pro vytváření i extrahování). Zkuste jej použít na konci možností.
- v znamená verbose:Je volitelné, ale ukazuje, co se s příkazem děje.
Samozřejmě nemůžete použít obě možnosti c a x ve stejném příkazu tar.
Závěr
Líbil se vám náš průvodce příkazem tar? Doufám, že vás všechny tyto tipy naučily něco nového.
Pokud se vám tato příručka líbí, sdílejte ji na sociálních sítích. Pokud máte nějaké připomínky nebo dotazy, zanechte je níže.
Pokud máte nějaké návrhy na témata, která byste rádi viděli, klidně je také zanechte. Děkuji za přečtení.