Fejezet 8. A tömörítés
BevezetésA 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 zipLinux 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
|