Fejezet 8. A tömörítés

Tartalomjegyzék
A tar
A z... parancsok

Bevezetés

A tömörítés egy olyan eljárás, amelynek segítségével egy fájlból egy kisebb fájl állítható elõ. Ha a tömörített fájlból teljes mértékben visszanyerhetõ az eredeti fájl (``bitrõl bitre''), akkor veszteségmentes, ha nem akkor veszteséges tömörítésrõl beszélünk. Az elsõ általánosan alkalmazható, a második csak akkor hogyha kis eltérések nem számítanak, pl. kép- és hangfájlok esetén.

A veszteséges tömörítési eljárások általában hatékonyabbak[1], de nem minden esetben alkalmazhatóak-egy futtatható programot akár egy bitnyi eltérés is használhatatlanná tenne. Ebben a fejezetben veszteségmentes tömörítésekkel foglalkozunk.

A tömörítés nagyon hasznos lehet, ha pl. helyet akarunk megspórolni a lemezen, vagy egy viszonylag lassú (pl. telefon) vonalon szeretnénk egy nagyobb fájlt elküldeni. Általános szabályként elmondható, hogy minél hatékonyabb egy tömörítési eljárás, annál több számolást igényel, vagyis lassabb. Nincs ``optimális'' tömörítés, mindig el kell dönteni, hogy érdemes-e több idõt rááldozni arra, hogy a kapott fájl valamivel kisebb legyen.

A tömörítések többek között a fájlban levõ ismétlõdéseket és más redundanciákat használják ki, például azt, hogy egy szövegfájl minden egyes byte-ján 256 érték lenne ábrázolható, szemben az általában kihasznált kb. 70 betûvel és írásjellel. Azok a fájlok amelyek nem ennyire ``rendezettek'', kevésbé tömöríthetõek. Például egy bináris fájl általában kevésbé tömöríthetõ mint egy szövegfájl, egy tömörített fájl pedig szinte egyáltalán nem tömöríthetõ tovább.

A GNU zip

Linux alatt a legelterjedtebb tömörítõprogram a GNU zip. A GNU zip LZ77 algoritmust használ, ami méret tekintetében nem tartozik a leghatékonyabbak közé, viszont nagyon gyors és kevés erõforrást igényel, ezért szinte bármilyen gépen alkalmazható.

A GNU zip egyszerre csak egy fájlt tömörít (ha több fájlt szeretnénk egybetömöríteni, akkor a tar programmal együtt használható). A tömörítésre a gzip parancsot használjuk. Az eredeti fájl törlõdik, a tömörített fájl neve végére automatikusan .gz kiterjesztés kerül.

$ ls -l
-rw-r--r--   1 tpapp    tpapp      303705 Oct 23 19:34 gnuplot.html
$ gzip gnuplot.html
$ ls -l
-rw-r--r--   1 tpapp    tpapp       91122 Oct 23 19:34 gnuplot.html.gz
$
Látható, hogy a tömörített fájl mérete az eredetinek kevesebb, mint a harmada. Kitömöríteni a gunzip paranccsal lehet[2].
$ ls -l
-rw-r--r--   1 tpapp    tpapp       91122 Oct 23 19:34 gnuplot.html.gz
$ gunzip gnuplot.html.gz
$ ls -l
-rw-r--r--   1 tpapp    tpapp      303705 Oct 23 19:34 gnuplot.html
$
A .gz kiterjesztés automatikusan lekerül a fájl végérõl. A gzip parancs sok paraméterrel rendelkezik, többek között lehet állítani a tömörítés mértékét, fájlneveket, stb. Javasolt a man oldal elolvasása.

Megjegyzések

[1] abban az értelemben, hogy kisebb fájlt állítanak elõ
[2] Ez a parancs tulajdonképpen a gzip parancsot használja, megfelelõen paraméterezve.