Hlavní navigace

Unixová komprese v praxi: Úvod

Petr Krčmář

Co je to komprese, k čemu slouží, ale hlavně, jak na ni v Unixu, to se dozvíte v našem novém seriálu. Dnes začneme trochu obecně. Znalejší jedinci prozatím prominou a článek přeskočí.

Komprese je převod dat z původní reprezentace do nové, úspornější. Tak nějak by asi mohla vypadat definice. Abychom si to vysvětlili nějak lidštěji: Kompresní metody nám umožní zmenšit množství dat, které potřebujeme, abychom uchovali danou informaci. Abychom však mohli původní data opět použít, musíme je opět převést do původní podoby. Reverzní postup se jmenuje dekomprese. Metody, které se při tom používají, nás v našem seriálu příliš zajímat nebudou (i když se některých letmo dotkneme), více nás bude zajímat praktická stránka.

Druhy komprese si můžeme rozdělit do dvou základních skupin: 1) Ztrátová komprese je metoda, při níž se využívá nedokonalosti lidských smyslů (hlavně zraku a sluchu) a počítač při ní dokáže „vynechat“ informace, které člověk stejně nevnímá. Výhodou je pak vyšší míra komprese, nevýhodou možnost použití jenom na specifická data, jako jsou obraz a zvuk. Je jasné, že pokud bychom tento typ komprese použili na klasická data, znehodnotili bychom je. Už bychom nikdy nedokázali získat zpět původní informaci. Jako příklad můžeme uvést obrázky JPEG, video soubory MPEG, případně známý zvukový formát MP3.

2) Bezztrátová komprese je metoda, při níž beze zbytku získáme po kompresi a dekompresi zcela stejnou informaci. Bezztrátovou kompresí se bude zabývat celý náš seriál.

K čemu komprese slouží. Nejčastěji ji využíváme při přenášení dat, kdy se snažíme, aby se nám na médium vměstnalo co nejvíce informací. Mnohem častěji však data komprimujeme, aniž o tom vůbec víme, například při komunikaci přes Internet. Spousta datových linek používá při přenosu některou z metod komprese, aby tak reálně zvýšila svou kapacitu. Na konci se data opět dekomprimují, a proto je celý proces pro uživatele zcela transparentní.

Jak moc to funguje. To je různé, většinou to záleží na dvou faktorech – druhu dat a použitém algoritmu. Co se druhu dat týče, nejvhodnější jsou soubory, kde se často opakují stejné řetězce, případně jsou použity jen některé znaky. Takovým souborem může být například čistý text, případně jednoduchý obrázek, nepříklad nějaké jednobarevné schéma. Za méně vhodný pak můžeme označit takový soubor, kde se vyskytují znaky víceméně náhodně a téměř se neopakují, jakým může být například binární spustitelný soubor, případně soubor již jednou zkomprimovaný.

Stupeň komprese se většinou označuje takzvaným kompresním faktorem, což je poměr nekomprimovaných dat ke komprimovaným. Pokud je tedy zkomprimovaný soubor proti původnímu poloviční, ríkáme, že je zkomprimován s kompresním poměrem 2.

V příším dílu seriálu si povíme něco o programu tar a dozvíte se, jak vlastně ke kompresi přistupuje Unix.

Máte-li zájem o nějaké konkrétní informace, které si chcete v seriálu přečíst, napište o nich do diskuse.

Našli jste v článku chybu?
16. 4. 2003 22:07
AnalProbe (neregistrovaný)

Uz delsi dobu pouzivam ve W2K komprimovanou NTFS a to na disku s malo "obrabenymi" daty. Na iso souborech to dela vice nez 10% usporu, coz neni k zahozeni. Vsechno frci naprosto bez problemu, komprimovane iso soubory montuju pres DaemonTools - vse naprosto bez problemu (pouzivame to i po lokalni siti). Uvital bych akorat moznost uzivatelsky ovlivnit kvalitu komprese - jasne, ze bych to na tom disku dal naplno :-). Z rychlosti strach nemam, dekomprese je rychla, procesor mam beztak vetsinu uptime…

19. 3. 2003 12:25
Mirek (neregistrovaný)

No, neni to tak uplne pravda, za prve si troufam tvrdit, ze minimalne u NT to stabilitu vubec nesnizuje a za druhe, ze by to zdrzovalo... schvalne jsem zkousel (subjektivne, bez stopek :) ) porovnavat rychlost spousteni a prace i dost narocneho softu pred kompresi a po... no fakt jsem tam rozdil nevidel. Urcite mate pravdu, ze kdyz zacinaly NT a byly nejake Pentia na 100 MHz, zanedbatelne to nebylo, dnes kdyz maji CPU radove vyssi vykony a nebudete tim komprimovat filmy a podobne nesmysly, neni …