Možnosti a porovnanie komprimácie súborov Linux

Linux File Compression Options



Kompresia je vo všeobecnosti užitočná metóda, ktorá v zásade kóduje informácie pomocou menšieho počtu údajov ako pôvodné. V prípade Linuxu existujú rôzne možnosti kompresie, z ktorých každá má svoje výhody.

Všeobecné distro Linuxu ponúka prístup k hŕstke skutočne užitočných a jednoduchých mechanizmov kompresie. Tento článok sa zameria len na ne.







Kompresné typy

Kompresia je kódovanie a predstavuje informáciu s použitím menšieho počtu bitov, ako pôvodne bola. V prípade kompresie súborov kompresná metóda využíva svoj vlastný algoritmus a matematický výpočet na generovanie výstupu, ktorý je spravidla menší ako veľkosť pôvodného súboru. Vzhľadom na to, ako funguje odlišná kompresia a náhodná povaha súborov, sa počet najazdených kilometrov môže výrazne líšiť.



Existujú 2 typy kompresie.



  • Stratová kompresia : Toto je rizikový typ kompresie, ktorá nezaručuje integritu údajov. Po kompresii v zásade existuje riziko, že pôvodný súbor nie je možné zrekonštruovať pomocou komprimovaného archívu.
    Dobrým príkladom tohto typu kompresie je známy formát MP3. Keď je MP3 vytvorený z pôvodného zvukového súboru, je výrazne menší ako pôvodný zdrojový hudobný súbor. To spôsobuje stratu určitej kvality zvuku.
  • Bezstratová kompresia : Toto je najpoužívanejší typ kompresie. Použitím metódy bezstratovej kompresie je možné pôvodný súbor zrekonštruovať z komprimovaného súboru. Metódy kompresie, o ktorých budem hovoriť v tomto článku, sú všetky metódy bezstratovej kompresie.

Linuxová kompresia

Väčšina kompresných metód je k dispozícii z tohto nástroja decht . Pokiaľ ide o kompresiu zipsu, použijeme PSČ nástroj. Za predpokladu, že váš systém už má tieto nástroje nainštalované, začnime.





Najprv potrebujeme testovací súbor. Vytvorte ho spustením nasledujúceho príkazu.

$base64/dev/urandom| hlava -c 20 000 000 >file.txt



Vytvorí sa textový súbor s veľkosťou 20 MB.

Teraz vytvoríme 10 kópií súboru. Spolu je to 200 MB.

Zip na kompresiu

Zip je celkom bežný. Na vytvorenie súboru zip vyžaduje nástroj zip nasledujúcu štruktúru príkazov.

$PSČ <výkon>.PSČ<vstup>

Ak chcete skomprimovať všetky súbory v testovacom adresári do jedného súboru zip, spustite tento príkaz.

$PSČtest.zip*

Vstupná veľkosť bola 200 MB. Po kompresii je to teraz 152 MB!

V predvolenom nastavení bude nástroj zip používať kompresiu DEFLATE. Je však tiež schopný použiť kompresiu bzip2. A nielen to, môžete vytvárať aj súbory zip chránené heslom! Prečítajte si viac o zip .

Tar pre kompresiu v systéme Linux

Decht nie je kompresná metóda. Namiesto toho sa najčastejšie používa na vytváranie archívov. Do archívu však môže implementovať množstvo obľúbených spôsobov kompresie.

Na správu archívu tar (tiež známeho ako tarball) slúži nástroj tar. Získajte viac informácií o dechte. Nástroj tar vo všeobecnosti používa nasledujúcu štruktúru príkazov.

$decht <možnosti> <výstupný súbor> <vstup>

Ak chcete testovacie súbory pridať do jedného archívu tar, spustite nasledujúci príkaz.

$decht -cvftest.tar*

Tu zostáva veľkosť súboru rovnaká.

Gzip pre kompresiu v systéme Linux

GNU Zip alebo gzip je ďalšou populárnou kompresnou metódou, ktorá je podľa mňa vďaka svojej lepšej kompresii lepšia ako tradičný zips. Je to open-source produkt vytvorený Markom Adlerom a Jean-Loup Gaillyovou, ktorý bol pôvodne určený ako náhrada za UNIX. komprimovať užitočnosť.

Na správu archívov gzip sú k dispozícii 2 nástroje: tar a gzip. Pozrime sa na oboch.

Najprv nástroj gzip. Takto vyzerá štruktúra príkazov gzip.

$gzip <možnosť> <vstup>

Nasledujúci príkaz napríklad nahradí test1.txt komprimovaným súborom test1.txt.gz.

$gzip -vtest1.txt

Ak chcete komprimovať celý adresár pomocou gzip, spustite tento príkaz. Tu príznak -r slúži na rekurzívnu kompresiu. Gzip prejde všetky priečinky a v každom z nich skomprimuje jednotlivé súbory.

$gzip -r <priečinok_cesta>

Gzip podporuje rôzne hodnoty sily kompresie, počnúc 1 (najmenšia kompresia, najrýchlejšia) až 9 (najlepšia kompresia, najpomalšia).

$gzip -v -9 <súbor>

Pre lepšiu kontrolu nad výstupom a jednoduché použitie je tar pre túto úlohu lepší. Spustite nasledujúci príkaz.

$decht -cvzftest.tar.gz*

Výsledok je podobný zipu s použitím DEFLATE, výsledkom je 152 MB po kompresii.

Bzip2 pre kompresiu v systéme Linux

Bzip2 je bezplatný a open-source nástroj, ktorý na kompresiu používa algoritmus Burrows-Wheeler. Prvýkrát uvedený v roku 1996, bzip2 sa často používa ako alternatíva k kompresii gzip.

Rovnako ako gzip existujú dva nástroje na prácu s bzip2: tar a bzip2.

Nástroj bzip2 funguje podobne ako nástroj gzip. Súčasne môže pracovať iba s jedným súborom. Tu je štruktúra príkazov.

$bzip2 <možnosť> <vstup>

Skomprimujme súbor test1.txt. Tu je príznak -v pre podrobný režim.

$bzip2 -vtest1.txt

Podobne ako gzip, aj bzip2 podporuje rôznu úroveň kompresie, počnúc 1 (predvolené, menšie využitie pamäte) až 9 (extrémna kompresia, vysoké využitie pamäte).

$bzip2 -v -9 <súbor>

Lepší spôsob použitia kompresie bzip2 je použitie tar. Použite nasledujúci príkaz.

$decht -cvjftest.tar.bz2*

Kompresia je o niečo vylepšená ako predchádzajúce. Teraz sa veľkosť súboru zmenšila na 151,7 MB.

XZ pre kompresiu v systéme Linux

Je to relatívny nováčik v oblasti kompresie. Prvýkrát uvedený na trh v roku 2009, odvtedy zaznamenáva neustály nárast používania.

Nástroj na kompresiu xz používa algoritmus LZMA2, ktorý je známy vyšším kompresným pomerom v porovnaní s gzip a bzip2, čo z neho robí skvelú voľbu, ak chcete ušetriť maximálne množstvo miesta na disku. To však prináša náklady na vyššie nároky na pamäť a časovú náročnosť.

Súbor vytvorený nástrojom na kompresiu XZ má príponu .xz. Na kompresiu jedného súboru môžete priamo zavolať nástroj XZ.

$xz<možnosť> <súbor>

Spustite napríklad nasledujúci príkaz na skomprimovanie súboru test1.txt.

$xz-vtest1.txt

Podobne ako ostatné uvedené metódy kompresie, aj xz podporuje rôzny rozsah sily kompresie, počnúc 1 (najnižšia kompresia, najrýchlejšia) až 9 (najlepšia kompresia, najpomalšia). Ak nemáte čas a chcete len ušetriť miesto, choďte do extrému.

$xz-v -9 <súbor>

Ak chcete vytvoriť komprimovaný súbor XZ zo všetkých testovacích súborov, spustite tento príkaz.

$decht -cvJftest.tar.xz*

Tu je veľkosť výstupného súboru 153,7 MB.

Extrahovanie komprimovaných archívov

Extrahovanie archívov, ktoré sme vytvorili, je jednoduchšie ako ich vytváranie. Na extrahovanie súboru zip použite nasledujúcu štruktúru príkazov.

$rozbaliť <názov súboru>.PSČ-d <destinácia>

Ak chcete extrahovať archív zip, ktorý sme vytvorili, spustite tento príkaz. Týmto sa rozbalí všetok obsah v rovnakom adresári.

$rozbaliťtest.zip

Na extrahovanie archívov tar, tar.gz, tar.bz2 a tar.xz musíme použiť decht nástroj. Nasledujúci príkaz tar je použiteľný na extrahovanie všetkých z nich.

$decht -xvf <archive_filename>

Extrahujme napríklad všetky súbory z komprimovaného archívu bz2.

$decht -xvftest.tar.bz2

Ak chcete dekomprimovať súbor gzip (nie tar.gz), spustite tento príkaz.

$gzip -d <gzip_file>

Podobne nasledujúci príkaz dekomprimuje archív bzip2.

$bzip2 -d <bzip2_file>

Rovnaká štruktúra príkazov platí pre archív xz.

$xz-d <xz_súbor>

Záverečné myšlienky

Našťastie teraz máte dostatok znalostí na zvládnutie úloh kompresie za rôznych okolností. V závislosti od konkrétnej požiadavky ponúkajú všetky metódy kompresie veľmi atraktívne funkcie.

Jedna dôležitá vec, ktorú je potrebné poznamenať, je, že výsledok kompresie nebude vždy rovnaký. Pri inom vstupe údajov bude výstup odlišný. V niektorých prípadoch môže napríklad xz ponúknuť šialený výsledok kompresie, zatiaľ čo v tomto prípade nie. To isté platí pre ostatné metódy.

Ak sa chcete o týchto nástrojoch dozvedieť podrobnejšie, navštívte príslušnú manuálovú stránku.

$muž PSČ