GNU/Linux >> Znalost Linux >  >> Linux

Jak archivovat a komprimovat soubory na Linuxu

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.


Linux
  1. 16 příkazů Tar pro kompresi a extrahování souborů v Linuxu

  2. Jak komprimovat a extrahovat soubory pomocí příkazu tar v systému Linux?

  3. Jak komprimovat a dekomprimovat soubory .bz2 v Linuxu pomocí příkazu bzip2

  1. Jak archivovat soubory a adresáře v Linuxu [část 2]

  2. Jak archivovat soubory a adresáře v Linuxu [část 1]

  3. Jak komprimovat a dekomprimovat soubory v Linuxu

  1. Jak najít soubory v Linuxu

  2. Jak extrahovat soubory .gz a .tar.gz v Linuxu

  3. Jak komprimovat a extrahovat soubory a adresáře v Linuxu pomocí gzip a bzip2