Možnosti a srovnání komprese souborů Linux

Linux File Compression Options



Komprese je obecně užitečnou metodou, která v podstatě kóduje informace pomocí menšího množství dat než původní. V případě Linuxu existují různé možnosti komprese, z nichž každá má své vlastní výhody.

Obecná distribuce Linuxu nabízí přístup k hrstce opravdu užitečných a jednoduchých kompresních mechanismů. Tento článek se zaměří pouze na ně.







Kompresní typy

Komprese je kódování a reprezentuje informace pomocí méně bitů, než původně bylo. V případě komprese souborů využívá metoda komprese svůj vlastní algoritmus a matematický výpočet ke generování výstupu, který je obecně menší než velikost původního souboru. Vzhledem k tomu, jak funguje různá komprese a náhodné povaze souborů, se kilometrový výkon může značně lišit.



Existují 2 typy komprese.



  • Ztrátová komprese : Toto je riskantní typ komprese, který nezaručuje integritu dat. V podstatě po kompresi existuje riziko, že původní soubor nelze rekonstruovat pomocí komprimovaného archivu.
    Dobrým příkladem tohoto typu komprese je známý formát MP3. Když je MP3 vytvořen z původního zvukového souboru, je výrazně menší než původní zdrojový hudební soubor. To způsobí ztrátu určité kvality zvuku.
  • Bezztrátová komprese : Toto je nejpoužívanější typ komprese. Pomocí metody bezeztrátové komprese lze původní soubor z komprimovaného souboru rekonstruovat. Kompresní metody, o kterých budu diskutovat v tomto článku, jsou všechny bezeztrátové kompresní metody.

Linuxová komprese

Většina metod komprese je k dispozici z nástroje dehet . Pokud jde o kompresi zipu, použijeme zip nářadí. Za předpokladu, že váš systém již má tyto nástroje nainstalované, začněme.





Nejprve potřebujeme testovací soubor. Spusťte následující příkaz a vytvořte jej.

$base64/dev/urandom| hlava -C 20 000 000 >soubor.txt



Vytvoří textový soubor o velikosti 20 MB.

Nyní vytvoříme 10 kopií souboru. Dohromady je to 200 MB.

Zip pro kompresi

Zip je celkem běžný. Pro vytvoření souboru zip vyžaduje nástroj zip následující strukturu příkazů.

$zip <výstup>.zip<vstup>

Chcete -li zkomprimovat všechny soubory v testovacím adresáři do jednoho souboru zip, spusťte tento příkaz.

$ziptest.zip*

Vstupní velikost byla 200 MB. Po kompresi je to nyní 152 MB!

Ve výchozím nastavení použije nástroj zip kompresi DEFLATE. Je však také schopen používat kompresi bzip2. A nejen to, můžete také vytvářet soubory zip chráněné heslem! Další informace o zipu .

Tar for Compression na Linuxu

Tar není kompresní metoda. Místo toho se nejčastěji používá k vytváření archivů. Může však do archivu implementovat řadu oblíbených metod komprese.

Pro zpracování archivu tar (také známý jako tarball) existuje nástroj tar. Další informace o dehtu. Nástroj tar obecně používá následující strukturu příkazů.

$dehet <možnosti> <výstupní soubor> <vstup>

Chcete -li přidat testovací soubory do jednoho archivu tar, spusťte následující příkaz.

$dehet -cvftest.tar*

Zde zůstává velikost souboru stejná.

Gzip pro kompresi na Linuxu

GNU Zip nebo gzip je další populární metoda komprese, která je podle mého názoru lepší než tradiční zip díky lepší kompresi. Jedná se o open-source produkt vytvořený Markem Adlerem a Jean-Loup Gailly, který byl původně určen k nahrazení UNIXu komprimovat užitečnost.

Pro správu archivů gzip jsou k dispozici 2 nástroje: tar a gzip. Pojďme se podívat na oba.

Nejprve nástroj gzip. Takto vypadá struktura příkazů gzip.

$gzip <volba> <vstup>

Následující příkaz například nahradí test1.txt komprimovaným souborem test1.txt.gz.

$gzip -protitest1.txt

Pokud chcete komprimovat celý adresář pomocí gzip, spusťte tento příkaz. Zde je parametr -r pro rekurzivní kompresi. Gzip projde všechny složky a v každé z nich zkomprimuje jednotlivé soubory.

$gzip -r <cesta_složka>

Gzip podporuje různé hodnoty síly komprese, od 1 (nejmenší komprese, nejrychlejší) do 9 (nejlepší komprese, nejpomalejší).

$gzip -proti -9 <soubor>

Pro lepší kontrolu nad výstupem a snadné použití je tar pro tento úkol lepší. Spusťte následující příkaz.

$dehet -cvzftest.tar.gz*

Výsledek je podobný zipu pomocí DEFLATE, což má za následek 152 MB po kompresi.

Bzip2 pro kompresi na Linuxu

Bzip2 je bezplatný a open-source nástroj, který pro kompresi používá algoritmus Burrows-Wheeler. Poprvé představen v roce 1996, bzip2 se hojně používá jako alternativa ke komprimaci gzip.

Stejně jako gzip existují 2 nástroje pro práci s bzip2: tar a bzip2.

Nástroj bzip2 funguje podobně jako nástroj gzip. Najednou může pracovat pouze s jedním souborem. Zde je struktura příkazů.

$bzip2 <volba> <vstup>

Zkomprimujme soubor test1.txt. Zde je parametr -v pro podrobný režim.

$bzip2 -protitest1.txt

Podobně jako gzip, bzip2 také podporuje různé úrovně komprese, počínaje 1 (výchozí, menší využití paměti) až 9 (extrémní komprese, vysoké využití paměti).

$bzip2 -proti -9 <soubor>

Lepší způsob použití komprese bzip2 je použití tar. Použijte následující příkaz.

$dehet -cvjftest.tar.bz2*

Komprese je o něco lepší než předchozí. Nyní se velikost souboru zmenšila na 151,7 MB.

XZ pro kompresi na Linuxu

Je to relativní nováček v oblasti komprese. Poprvé vydán v roce 2009, od té doby zaznamenává neustálý růst využití.

Nástroj pro kompresi xz používá algoritmus LZMA2, který je známý pro vyšší kompresní poměr ve srovnání s gzip a bzip2, což je skvělá volba, pokud chcete ušetřit maximální množství místa na disku. S tím jsou však spojeny náklady na vyšší nároky na paměť a časovou náročnost.

Soubor vytvořený kompresním nástrojem XZ má příponu .xz. Pro kompresi jednoho souboru můžete přímo zavolat nástroj XZ.

$xz<volba> <soubor>

Například spuštěním následujícího příkazu zkomprimujte soubor test1.txt.

$xz-protitest1.txt

Podobně jako ostatní zmíněné způsoby komprese, xz také podporuje různé rozsahy síly komprese, počínaje 1 (nejnižší komprese, nejrychlejší) až 9 (nejlepší komprese, nejpomalejší). Pokud nemáte zájem o čas a chcete jen ušetřit místo, jděte do extrému.

$xz-proti -9 <soubor>

Chcete -li vytvořit komprimovaný soubor XZ ze všech testovacích souborů, spusťte tento příkaz.

$dehet -cvJftest.tar.xz*

Zde je velikost výstupního souboru 153,7 MB.

Extrahování komprimovaných archivů

Extrahování námi vytvořených archivů je snazší než jejich vytváření. Chcete -li extrahovat soubor zip, použijte následující strukturu příkazů.

$rozepnout <název souboru>.zip-d <destinace>

Chcete -li extrahovat archiv zip, který jsme vytvořili, spusťte tento příkaz. Tím se extrahuje veškerý obsah ve stejném adresáři.

$rozepnouttest.zip

Pro extrahování archivů tar, tar.gz, tar.bz2 a tar.xz musíme použít dehet nářadí. Následující příkaz tar je použitelný pro extrahování všech z nich.

$dehet -xvf <název_archivního_souboru>

Extrahujme například všechny soubory z komprimovaného archivu bz2.

$dehet -xvftest.tar.bz2

Chcete -li dekomprimovat soubor gzip (nikoli tar.gz), spusťte tento příkaz.

$gzip -d <gzip_file>

Podobně následující příkaz dekomprimuje archiv bzip2.

$bzip2 -d <bzip2_file>

Pro archiv xz platí stejná struktura příkazů.

$xz-d <xz_soubor>

Závěrečné myšlenky

Doufejme, že nyní máte dostatek znalostí pro zvládnutí úloh komprese za různých okolností. V závislosti na konkrétním požadavku nabízejí všechny způsoby komprese velmi atraktivní funkce.

Jedna důležitá věc je, že výsledek komprese nebude vždy stejný. Při odlišném zadávání dat bude výstup jiný. Například v některých případech může xz nabídnout šílený výsledek komprese, zatímco v tomto případě ne. Totéž platí pro jiné metody.

Chcete-li se o těchto nástrojích dozvědět více do hloubky, podívejte se na jejich příslušnou manuálovou stránku.

$muž zip