Jako správce systému jste si možná stáhli nějaké archivy, které potřebujete rozbalit za účelem odhalení jejich souborů.
Možná také zálohujete celou databázi vytvořené ze široké škály malých souborů, které chcete agregovat do jednoho archivu.
Archivace a komprimaci souborů jsou běžné operace ve světě Unixu, které pravidelně provádějí správci systému.
Naštěstí pro vás Linux zpřístupňuje sadu různých příkazů za účelem archivace, komprimace, dekomprimace a extrahování souborů z archivu.
V tomto tutoriálu se dozvíte více o příkazu tar a také o různých metodách komprese, které lze použít za účelem úspory místa v Linuxu.
Jste připraveni?
Archivujte soubory v systému Linux pomocí tar
Dehtovat je velmi oblíbený příkaz mezi správci systému.
Někdy se označuje jako tarball tar se historicky používal k zápisu dat do zařízení, která v té době neměla systémy souborů.
V důsledku toho byl v 1979 zaveden příkaz tar za účelem nahrazení „tp ” program, který se tehdy používal.
V dnešní době příkaz tar se široce používá k archivaci souborů (což znamená skládání souborů do jednoho archivu).
Chcete-li archivovat soubory v systému Linux pomocí nástroje tar, spusťte „tar “ pomocí „cvf ” možnosti.
$ tar -cvf archive.tar file1 file2 directory1 directory2
file1/
file2/
directory1/
directory2/
V tomto případě jsme použili tři různé možnosti:
- -c :pro vytvoření archivu, docela samovysvětlující možnost, pokud chcete vytvořit nový archiv vytvořený z vybraných souborů;
- -v :pro podrobné informace, toto je důvod, proč příkaz zobrazí soubory přidané do archivu při jeho spuštění;
- -f :pro soubor se tato možnost používá k zadání názvu souboru archivu, který chceme vytvořit (v tomto případě archive.tar)
Tyto možnosti jsou pravděpodobně nejdůležitějšími možnostmi archivace souborů v systému Linux.
Při spuštění příkazu tar s příznakem „-f“ byl ve vašem aktuálním pracovním adresáři vytvořen nový archiv.
$ ls -l
total 20
-rw-rw-r-- 1 schkn schkn 10240 Nov 9 10:41 archive.tar
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory1
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory2
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file1
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file2
Jak vidíte, velikost archivu je větší než součet souborů v něm.
Proč?
Vytváření archivu tar jednoduše neukládá soubory a adresáře do velké krabice:archiv je také speciální soubor vytvořený ze speciálních hlaviček souborů, které mohou zabírat značné množství místa.
V důsledku toho je váš archiv mnohem větší než součet souborů v něm.
To je velmi důležitý fakt, protože jsme schopni pochopit, že archivace souborů neznamená, že jsou v něm vaše soubory komprimovány.
Chcete-li při archivaci komprimovat soubory, musíte příkazu tar poskytnout další možnosti.
Komprese souborů bude vysvětlena v následujících kapitolách.
Extrahujte soubory pomocí tar v systému Linux
Nyní, když jste vytvořili archivní soubor, možná budete chtít extrahovat soubory umístěné ve vašem archivu.
Chcete-li extrahovat soubory pomocí příkazu tar, připojte „-x ” místo počáteční volby “-c”.
$ tar -xvf archive.tar
file1
file2
directory1/
directory2/
Všimněte si, že rozbalení vašich souborů neznamená, že archiv bude smazán z vašeho aktuálního pracovního adresáře.
$ ls -l
total 28
-rw-rw-r-- 1 schkn schkn 10240 Nov 9 12:01 archive.tar
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory1
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory2
-rw-rw-r-- 1 schkn schkn 0 Nov 9 12:00 file1
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file2
Při extrahování souborů v Linuxu je tu malý problém, kterého si musíte být vědomi.
Pokud má soubor v aktuálním pracovním adresáři stejný název jako soubor v archivu, bude obsah souboru v pracovním adresáři nahrazen obsahem z archivu.
Chcete-li to ilustrovat, přidejte do jednoho ze svých souborů nějaký obsah, extrahujte soubory a znovu zkontrolujte obsah souboru.
$ echo "Added some content to the file" > file1
$ tar -xvf archive.tar
$ cat file1
<empty>
Porovnání místních souborů s archivními soubory
Aby se zabránilo vymazání dat během procesu, může příkaz tar porovnávat soubory umístěný ve vašem aktuálním pracovním adresáři se soubory ve vašem archivu.
Zpět k příkladu, o kterém jsme hovořili dříve, pojďme přidat nějaký obsah zpět do souboru „file1“.
$ echo "Added some content to the file" > file1
Chcete-li porovnat soubory s tar, použijte volbu „-d“.
$ tar -dvf archive.tar
file1
file1: Mod time differs
file1: Size differs
file2
directory1/
directory2/
Jak vidíte, tar porovná časová razítka a konkrétněji nejnovější datum úpravy souboru.
Pokud je datum modifikace lokálního souboru novější než datum z archivního souboru, příkaz tar zobrazí upozornění ukazující, že se čas modifikace liší.
Podobně může tar kontrolovat velikosti souborů a zvýraznit rozdíly ve velikosti mezi vašimi soubory.
Abyste se vyhnuli vymazání souborů, můžete použít hvězdičku příkaz, který je skvělou alternativou k existujícímu příkazu tar.
Zabránit přepsání souboru pomocí hvězdičky
Ve výchozím nastavení nemusí být ve vašem systému nainstalován obslužný program star.
Chcete-li nainstalovat obslužný program hvězda, spusťte nástroj YUM
$ sudo yum install star
Poté, abyste archivovali soubory s hvězdičkou, jednoduše spusťte „star“ s volbou „-c“.
$ star -c -f=archive.tar file1 file2
Poté můžete použít nástroj gzip nebo gunzip ke komprimaci nového archivu.
$ gzip archive.tar
V důsledku toho bude původní soubor tar transformován do archivu tar.gz.
Pokud byste nyní vytvořili soubor s přesně stejným názvem, obslužný program hvězd by jej ve výchozím nastavení nepřepsal.
$ echo "This is some content" > file1
$ gzip -d archive.tar.gz
$ star -x -f=archive.tar
star: current 'file1' newer.
star: current 'file2' newer.
star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).
$ cat file1
This is some content
Docela užitečné, když se bojíte, že o svůj obsah přijdete!
Komprimace souborů pomocí gzip v systému Linux
Nyní, když máte svůj archiv tar připravený, je dalším krokem jeho komprimace, aby se zmenšila jeho velikost.
K tomu nejprve použijeme gzip utility.
Ve výchozím nastavení by měl být nainstalován nástroj gzip, ale pokud tomu tak není, nainstalujte jej v závislosti na vaší distribuci.
$ sudo apt-get install gzip
$ sudo yum install gzip
Nyní, když je gzip nainstalován, spusťte „gzip“ a předejte archiv, který jste právě vytvořili, jako argument.
$ gzip archive.tar
Spuštěním příkazu gzip se vytvoří tar.gz soubor v aktuálním pracovním adresáři.
A co je nejdůležitější, počáteční soubor tar bude upgradován na tar.gz, takže již nebudete mít původní archiv.
$ ls -l
total 12
-rw-rw-r-- 1 schkn schkn 184 Nov 9 10:41 archive.tar.gz
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory1
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory2
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file1
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file2
Jak můžete vidět, velikost souboru se dramaticky zmenšila z 10 Kb na úžasných 184 bajtů, gzip zmenšil velikost souboru o více než 98 %.
Pokud však nechcete používat nástroj gzip, můžete soubory komprimovat také pomocí příkazu tar s možnostmi.
Myslíte si, že to může zlepšit míru komprese?
Komprimace souborů v systému Linux pomocí tar
Jak bylo zmíněno v první části, příkaz tar lze použít k archivaci a komprimaci souborů na jednom řádku.
Chcete-li komprimovat soubory s tar jednoduše přidejte “-z” možnost k vaší aktuální sadě možností.
$ tar -cvzf archive1.tar.gz file1 file2 directory1 directory2
Podobně jako u prvního příkazu tar, který jste spustili, bude ve vašem aktuálním pracovním adresáři vytvořen nový komprimovaný archivní soubor.
Chcete-li zkontrolovat vytvořené soubory, jednoduše znovu spusťte příkaz „ls“.
$ ls -l
total 28
-rw-rw-r-- 1 schkn schkn 184 Nov 9 10:41 archive.tar.gz
-rw-rw-r-- 1 schkn schkn 172 Nov 9 11:10 archive1.tar.gz
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory1
drwxrwxr-x 2 schkn schkn 4096 Nov 9 10:41 directory2
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file1
-rw-rw-r-- 1 schkn schkn 0 Nov 9 10:41 file2
Nyní, jak vidíte, vytvořený komprimovaný archiv je o něco světlejší než archiv vytvořený pomocí gzip.
Komprimace souborů pomocí bzip2
Většinu času příkaz gzip se používá ke kompresi souborů nebo archivů.
Toto však není historicky jediná kompresní metoda dostupná v softwarovém inženýrství:můžete také použít bzip2.
Hlavní rozdíl mezi gzip a bzip2 je v tom, že gzip používá kompresní algoritmus LZ77 zatímco bzip2 používá algoritmus Burrows-Wheeler .
Je známo, že Bzip2 je poměrně pomalejší než algoritmus gzip, nicméně v některých případech může být užitečné vědět, jak komprimovat pomocí bzip2.
Chcete-li komprimovat soubory pomocí bzip2, jednoduše spusťte „bzip2“ s názvem souboru, který chcete komprimovat.
$ bzip2 archive.tar
Chcete-li dekomprimovat soubory komprimované pomocí bzip2, jednoduše připojte k příkazu volbu „-d“.
$ bzip -d archive.tar.bz2
Alternativně můžete vytvořit archivy bz2 pomocí příkazu tar a zadáním volby „-j“.
$ tar -cjf archive.tar.gz2 file1 file2
Pomocí tar máte možnost komprimovat pomocí širokého panelu různých kompresních metod:
- -j :komprimovat soubor pomocí metody komprese bz2;
- -J :používá kompresní nástroj xz;
- –lzip :používá kompresní nástroj lzip;
- –lzma :používá kompresní nástroj lzma;
- –lzop :používá lzop ke komprimaci souborů
- -z :ekvivalentní k nástroji gzip nebo gunzip.
Závěr
V tomto tutoriálu jste se naučili, jak můžete archivovat a komprimovat soubory pomocí nástroje tar v systému Linux.
Také jste se dozvěděli o různých dostupných metodách komprese a o tom, jak je lze použít ke zmenšení velikosti souborů a adresářů.
Pokud vás zajímá administrace linuxového systému, máme na webu kompletní sekci věnovanou tomu, takže se určitě podívejte.