Tömörítés
1
1. Tömörítés A tömörítés olyan speciális kódolási eljárás, amelynek segítségével a fájlokban tárolt információk sokkal kevesebb bitet foglalnak el, mint kódolatlanul. A helytakarékosság fontos lehet például archiválásoknál, vagy az Interneten történő kommunikációnál, a levelező rendszerek általában maximálják a levélhez csatolható fájlok méretét. A tömörítés mértéke függ a fájl tartalmától és az alkalmazott tömörítő eljárástól. A tömörítés lehet veszteségmentes, vagy veszteséges. Veszteségmentes tömörítést kell alkalmazni, ha a visszakódolás után pontosan meg kell kapnunk a kiinduló fájlt. Ilyen például a szövegek, vagy programkódok tömörítése. Veszteséges tömörítést alkalmazhatunk, ha nem jelent gondot az információ kis százalékának elvesztése. Ilyen eljárást lehet alkalmazni képek, vagy hangok tömörítésére. Számos tömörítő kódolási eljárás létezik, de ezek közül csak néhány terjedt el széleskörűen, ezek közé tartozik a ZIP, ACE, és a RAR. A tömörített fájlok közvetlenül nem dolgozhatók fel, a használat előtt ki kell tömöríteni őket, vagyis a kódolást visszafelé is el kell végezni, hogy visszakapjuk az eredeti fájltartalmat. Egy adott kódolású tömörített fájlt csak ugyanazzal a kódoló eljárással lehet kitömöríteni, tehát egy ZIP fájlt nem lehet például RAR eljárással kicsomagolni. Számos tömörítő program többféle kódolási eljárást is támogat. Bizonyos fájltípusok jól tömöríthetők, ilyenek például a dokumentumok, vagy a bitmap képek, mások viszont alig. Speciális esetben az is előfordulhat, hogy a tömörített fájl mérete nagyobb, mint az eredetié, mert a visszakódoláshoz szükséges információkat is tartalmazza. Főleg a világhálón történő kommunikáció elterjedése miatt alakítottak ki olyan fájlformátumokat, amelyek tömör kódolással tartalmazzák az információkat. Ezek tömörítő programmal már szinte egyáltalán nem tömöríthetők tovább. Ilyen fájl típusok például a GIF és a JPEG (JPG) képek, vagy az MPEG (MPG) videó fájlok. Egy tömörített fájl több fájlt is tartalmazhat, így egész fájlcsoportot kezelhetünk együtt, egyetlen fájlként. Ez hasznos lehet például archiválásnál, vagy levél-mellékleteknél. A tömörítő programok egy része darabolni is tudja a fájlokat, ez azt jelenti, hogy egy nagy fájlt az általunk megadott méretű darabokra vág szét. Erre akkor lehet szükség például, ha egy elektronikus levélhez szeretnénk csatolni a fájlt, de még a tömörített mérete is meghaladja a levelező rendszerben engedélyezett méretet. Ha a fájllal dolgozni szeretnénk, akkor újra össze kell illeszteni a darabjait a tömörítő program segítségével.
Tömörítés
2
Egyes tömörítő programok önkicsomagoló tömörített fájlokat is létre tudnak hozni, ezek kiterjesztése EXE. A fájlt elindítva automatikusan megtörténik a kitömörítés. A tömörített fájlokat tartalmazó fájlt archívumnak nevezzük. Az archívumunkat elláthatjuk jelszóval, ekkor a tartalmának megtekintéséhez, és a fájlok kitömörítéséhez meg kell adni a beállított jelszót A tömörítési eljárásokról bővebb információ található a Függelékben.
1.1.1. WinRAR tömörítő program A WinRAR egy könnyen alkalmazható, magyar nyelven is elérhető tömörítő program. Segítségével létrehozhatunk archívumokat, vagy megtekinthetjük, illetve visszakódolhatjuk az archívumok tartalmát. Létrehozhatunk olyan archívumokat is, amelyek tömörítetlenül tartalmazzák a fájlokat, ez akkor lehet hasznos, ha az archívum segítségével együtt szeretnénk kezelni a fájlokat, de nincs szükség a méret csökkentésére. A WinRAR ablakban legfelül helyezkedik el a menüsor, alatta pedig az eszköztár gombsora, ahol megtalálhatjuk a legfontosabb funkciók gombjait. Ez alatt látható a címsor, majd a fájl-ablak következik. Itt látható az aktuális mappa, vagy archívum tartalomjegyzéke. Archívum esetén a fájlok neve mellett az eredeti és a tömörített méret is szerepel. Legalul helyezkedik el a státuszsor, amelyben információkat láthatunk a mappában, vagy az archívumban található fájlok számáról, összméretéről a kijelölt fájlok számáról és összméretéről.
1.1.1.1. Fájlok archiválása Indítsuk el a WinRAR programot, majd a megjelenő ablakban állítsuk be azt a mappát, amelyben a tömörítendő fájlok vannak. Ezt megtehetjük tallózással - ehhez nyissuk le a címsorhoz tartozó listát, vagy az ablakban a mappák között lépegetve. Egy szinttel feljebb az ablak tetején látható .. (két pont) elemre, vagy a címsor baloldalán látható felfelé mutató nyílra kattintva léphetünk, egy mappába pedig az ikonjára kattintva léphetünk be. Jelöljük ki az archiválandó fájlokat, majd kattintsunk a Hozzáad gombra. A megjelenő kisablakban adhatjuk meg, hogy melyik archívumba kerüljenek a fájlok, és beállíthatjuk a tömörítés egyéb opcióit. Az Általános lapon a Tallóz segítségével megkereshetjük azt az archívumot, amelyikbe a fájlokat tenni szeretnénk. Ha új archívumot akarunk létrehozni, akkor keressük meg a célmappát, és a kisablakba írjuk be az archívum nevét.
Tömörítés
3
A Frissítési mód alapértelmezés szerint a fájlok hozzáadása, és cseréje. Ez azt jelenti, hogy ha a kijelölt fájlok között vannak olyanok, amik már szerepelnek az archívumba, akkor az archívumban levőket lecseréli, azokat a fájlokat pedig, amelyek még nem voltak az archívumban, hozzáadja. Választhatunk olyan frissítési módot is, amelyik csak a meglevő fájlokat cseréli, de nem adja hozzá azokat, amelyek nem szerepeltek benne, vagy épp fordítva, csak az új fájlokat adja hozzá, a létezőket nem cseréli le. A felülírás abban különbözik a cserétől, hogy csak akkor történik meg, ha a kijelölésben szereplő fájl újabb, mint az archívumban levő. Az archívum tartalmának szinkronizálása során a meglevő fájlokat frissíti (tehát csak akkor cseréli le, ha a hozzáadandó fájl újabb), azokat, amelyek nem szerepelnek az archívumban, hozzáadja, az archívumból pedig törli azokat a fájlokat, amelyek nem szerepelnek a hozzáadandó fájlok között. Az archívum formátumánál választhatunk a RAR, vagy a ZIP tömörítés között, a tömörítési eljárásnál pedig a tömörítés minőségéről dönthetünk. Ha gyors tömörítést választunk, akkor a tömörítés nem lesz túl hatékony, ha erős tömörítést akarunk, akkor válasszuk a legjobbat, ennek végrehajtása azonban tovább fog tartani. Ha a raktározást választjuk, akkor a fájlok tömörítetlenül kerülnek az archívumba. A kötetnagyságot csak akkor kell megadni, ha a létrejövő archívumot darabolni szeretnénk, például azért, mert CD lemezekre akarjuk írni, így CD méretű köteteket kell létrehozni. Az archiválási opcióknál állíthatjuk be, hogy törölje a fájlokat az archiválás után, vagy adjon hitelesítési információkat is a fájlhoz. Érdemes beállítani az Archivált fájlok tesztjét, ekkor a tömörítés végén a program ellenőrzi az archívumban található fájlokat. Ha az archívumot zároljuk (Archívum lezárása), akkor a későbbiekben már nem lehet módosítani. Ha önkicsomagoló fájlt (SelF eXtracting) szeretnénk létrehozni, akkor válasszuk az SFX archívum létrehozása opciót. A létrejövő fájl kiterjesztése .exe lesz. A Fájlok lapon pontosíthatjuk, hogy mely fájlok legyenek hozzáfűzve az archívumhoz, vagy melyek legyenek kizárva az archiválásból. A Fájl útvonalaknál dönthetünk arról, hogy a fájlok relatív, vagy az abszolút elérési útvonalát tároljuk - esetleg a meghajtó betűjelével együtt, de választhatjuk azt is, hogy az útvonalak egyáltalán ne kerüljenek tárolásra. A Biztonsági mentés lapon állíthatjuk be, hogyha az archív attribútum alapján szeretnénk a fájlokat archiválni, ekkor célszerű azt is bejelölni, hogy az archiválás után ezek az attribútumok törlődjenek. Ha az archívumunkat jelszóval szeretnénk védeni, akkor azt a Fejlett elnevezésű lapon adhatjuk meg.
Tömörítés
4
1.1.1.2. Fájlok törlése az archívumból Egy archívumból törölhetünk fájlokat, ehhez a WinRAR ablakában nyissuk meg az archívumot, jelöljük ki a törlendő fájlokat, majd az Eszköztárban kattintsunk a Törlés gombra, vagy a jobbgombos menüben válasszuk a Fájl törlése pontot.
1.1.1.3. Fájlok kitömörítése Egy archívumot kitömöríthetünk teljes egészében, de megtehetjük azt is, hogy csak egy, vagy néhány fájlt tömörítünk ki belőle. A teljes archívum kitömörítéséhez a WinRAR ablakában állítsuk be azt a mappát, amelyben az archívum van. Jelöljük ki az archívumot, majd az Eszköztárban kattintsunk a Kibontás ide gombra, vagy a jobbgombos menüből válasszuk a Kitömörítés egy megadott mappába pontot. Ha csak bizonyos fájlokat szeretnénk kitömöríteni, akkor az ablakban nyissuk meg az archívumot és jelöljük ki a megfelelő fájlokat, majd kattintsunk az Eszköztárban Kibontás ide gombra, vagy a jobbgombos menüben válasszuk a kitömörítés menüpontját. A megjelenő kisablak Általános lapján állítsuk be a célmappát. A mappa kereséséhez segítséget nyújt a jobboldali ablakrészben látható könyvtárstruktúra. A Frissítési mód alapértelmezés szerint a Fájlok kibontása és cseréje. Ekkor a program az archívumban szereplő összes fájlt kitömöríti. Ha a Fájlok kibontása és frissítése opciót választjuk, akkor csak azok a fájlok kerülnek kibontásra. amelyek nem léteznek a célmappában, vagy újabbak, mint a célmappában található változat. A Csak a létező fájlok frissítését választva csak azokat a fájlokat tömöríti ki a program, amelyek már léteznek a célmappában, de régebbiek, mint az archívumban találhatók. A Felülírásos módnál rendelkezhetünk arról, hogy mi történjen akkor, ha a célmappában már van olyan nevű fájl, mint amit ki szeretnénk tömöríteni. Választhatjuk, hogy kérdezzen rá mielőtt felülírja a fájlt, de beállíthatjuk azt is, hogy figyelmeztetés nélkül írja felül a fájlokat. Ha a Létező fájlok átugrását állítjuk be, csak azok a fájlok kerülnek kitömörítésre, amelyek még nem szerepelnek a célmappában. Ha az Automatikus átnevezést választjuk, akkor, ha már létezik ugyanolyan névvel fájl a mappában, akkor a kitömörített fájl nevét egy sorszámmal egészíti ki a program, így az eredeti és a kitömörített fájl is szerepelni fog a célmappában. A Fejlett elnevezésű lapon rendelkezhetünk az útvonalak felhasználásáról. Ha a Relatív útvonal kibontása pontot választjuk, akkor a célmappában csak attól a mappától kezdve épül fel a részfa, amelyben az archívumon belül a kijelölt fájlok találhatók.
Tömörítés
5
Példa: Az archívum Képek\Saját mappájában két alkönyvtár található, a Kirándulás és a Szülinap. A Saját mappában szereplő fájlokat és alkönytárakat szeretnénk kitömöríteni az Album mappába. A kicsomagolás során az Album, mappában létrejön a Kirándulás és a Szülinap mappa. Azok a fájlok, amelyek a Saját mappában szerepeltek, az Album mappába kerülnek, az almappákban szereplők pedig az Album mappa megfelelő nevű almappáiba.
Ha a Teljes útvonal kibontását választjuk, akkor a célmappában felépül a kicsomagolandó fájlokhoz elmentett teljes könyvtárstruktúra. Példa: Az archívum Képek\Saját mappájából a Tájkép.jpg fájlt a teljes útvonal kibontásával szeretnénk kitömöríteni az Album mappába. A program létrehozza az Album mappában a Képek mappát, ebben a Saját mappát, majd abban helyezi el a kitömörített fájlt.
Tömörítés
6
Ha a kitömörítés során azt választjuk, hogy Ne bontsa ki az útvonalakat, akkor minden fájl a célmappába kerül, függetlenül attól, hogy az archívumban melyik mappában szerepelt. Példa: Az archívumból az útvonalak nélkül tömörítünk ki minden fájlt az Album mappába:
A Abszolút útvonalak kibontását akkor használjuk, ha az archívumban elmentettük a fájlok teljes elérési útvonalát a meghajtó betűjelével együtt, és az eredeti helyükre szeretnénk kitömöríteni őket. A Fejlett elnevezésű lapon rendelkezhetünk arról is, hogy az archívum törlődjön a kicsomagolás után.
Tömörítés
7
1.1.2. Tömörítés a Total Commander program segítségével 1.1.2.1. Archívum létrehozása Az egyik panelen állítsuk be azt a mappát, amelyikbe az archívumot szeretnénk létrehozni, a másik panelen pedig jelöljük ki azokat a fájlokat és/vagy könyvtárakat, amelyeket el szeretnénk helyezni az archívumban. Legyen ez az aktív panel, és válasszuk a Fájl menü Becsomagolás pontját, vagy üssük le a billentyűzeten az Alt–F5 billentyűkombinációt. A megjelenő kisablakban adhatjuk meg az archívum nevét, ez alapértelmezés szerint a fájlokat tartalmazó mappa neve, de tetszőlegesen megváltoztatható. A jobboldalon válasszuk ki a tömörítő eljárást. Az alapértelmezés a ZIP, de választhatunk például ARJ-t, vagy RAR-t is, amennyiben a gépre fel van telepítve az eljárás programja. A Beállítás gombra kattintva megjelenő kisablakban további beállításokat tehetünk. Zip tömörítés esetén megadhatjuk a tömörítési arányt, melyet egy 10 fokú skálán lehet beállítani. A 9-es fokozat a legnagyobb tömörítés, ekkor kapjuk a legkisebb méretű fájlt, ennek megfelelően ez a leglassabb is. A leggyorsabb tömörítés az 1-es szintű. Általában a normál tömörítést használjuk, ez a 6-os szint, a legtöbb esetben ez időben és a tömörítés mértékében is megfelelő eredményt ad. Ha 0 szintű tömörítést választunk, akkor az archívumba tömörítetlenül kerülnek a fájlok. Fogadjuk el a beállításokat, ekkor a kisablak bezáródik. A
Fájl
csomagolása
ablakban
jelölő
négyzetek
segítségével
beállíthatjuk,
hogy
a
Könyvtárbejegyzéssel együtt, vagyis az útvonalakkal együtt történjen a csomagolás. Ekkor az archívumban tárolásra kerül a fájlok abszolút elérési útvonala is. Ha nemcsak az aktuális könyvtár, hanem az alkönyvtárainak fájljait is szeretnénk becsomagolni, akkor jelöljük be az Almappákat is jelölőnégyzetet. A Tömörítettbe áthelyez pontot választva a csomagolás után az eredeti fájlok törlődnek. Készíthetünk önkicsomagoló fájlt, és titkosíthatjuk is az archívumot. A jelszót a következő kisablakban kell megadnunk.
1.1.2.2. Kitömörítés Az egyik panelen állítsuk be azt a mappát, ahova a fájlokat ki szeretnénk tömöríteni, a másik panelen pedig álljunk az archívum fájlon. Dupla kattintással, vagy az Enter leütésével nyissuk meg az archívumot. Ekkor a panelen az archívum tartalma látható. Jelöljük ki a kitömörítendő fájlokat és mappákat, majd másoljuk azokat a másik panelre (F5). Ha a kitömörítéshez a másolás helyett a Fájl menü Kicsomagolás pontját választjuk, további opciókat adhatunk meg. A megjelenő kisablakban megadhatjuk a kicsomagolás helyét, a kicsomagolandó fájlokat, és azt, hogy az alkönyvtárakkal együtt történjen-e a kicsomagolás. Beállíthatjuk, hogy a célmappában írja felül az azonos nevű fájlokat, és kérhetjük azt is, hogy minden fájl külön mappába kerüljön kicsomagolásra.
Tömörítés
8
1.2. Tömörítési algoritmusok (olvasmány) A tömörítés valamilyen matematikai algoritmus segítségével történik. Számos elvet kidolgoztak, a legelterjedtebbek:
Gyakoriság szerinti kódolás Változó hosszúságú kódokat alkalmaz, a gyakoribb karaktereknek rövidebb, a ritkábbaknak hosszabb kódot feleltetnek meg.
Delta kódolás Az előzőtől való eltérést tárolják.
Futáshossz kódolás Ismétlődő részek esetén alkalmazható, a rész kódját, és az ismétlések számát tárolják.
Példaként nézzünk meg két olyan kódolási eljárást, amely a mai tömörítő-algoritmusok alapjául szolgál.
Aritmetikai kódolás Az aritmetikai kódolás alapelveit Claude Elwood Shannon fektette le egy 1948-as cikkében. Az aritmetikai kódolás egy veszteségmentes kódolási eljárás, amelynek során a kódolandó információt áttranszformálják egy 0 és 1 közötti számmá. A kódolási folyamat első lépése, a karakterek gyakoriságának megállapítása, majd ez alapján a [0,1) intervallumot felosztják a karakterek között. Minél gyakrabban fordul el egy karakter, annál nagyobb intervallum tartozik hozzá. A második lépésben a [0,1) intervallumra sorban alkalmazzuk a forrás intervallumokat, míg egyetlen 0 és 1 közötti számot kapunk eredményül.
Példa. Legyen a szöveg: ALMA
karaktereinek megfelelő
Tömörítés
9
Gyakorisági tábla: gyakoriság A
2
L
1
M
1
Osszuk fel a [0,1) intervallumot a gyakoriságoknak megfelelően: A [0,0.5) L [0.5,0.75) M [0.75,1)
A kódolás lépései 1.
A [0,1) intervallumra alkalmazzuk az első karakter kódját : [0,0.5)
2.
A kapott intervallumra alkalmazzuk a második karakter kódját, vagyis az intervallum
harmadik negyedét kell vennünk [0.25,0.375) 3.
A kapott intervallumra alkalmazzuk a következő karakter kódját, vagyis vegyük az
intervallum negyedik negyedét: [0.3125,0.375) 4.
A kapott intervallumra alkalmazzuk a negyedik karakter kódját, vagyis vegyük az
intervallum első felét: [0.3125,0.34375) 5.
A kapott intervallumból vegyük a legrövidebb bináris számot. Ez lesz a kódolás
végeredménye.
Huffman kódolás David Huffman a Massachusetts Institute of Technology (MIT) Ph.D. hallgatójaként 1952-ben publikálta kódolási eljárását. A Huffman kódolás egy veszteségmentes kódolási eljárás, amely azon alapul, hogy változó hosszúságú kódokat alkalmaz az előforduló karakterek átkódolására. Minél
Tömörítés
10
gyakrabban fordul elő a forrásban egy karakter, annál rövidebb kódot feleltetnek meg neki. A kódolás első menetében statisztikát készítenek az előforduló karakterekről, a statisztika alapján elkészítik a kódtáblát, majd a második menetben történik meg a tényleges kódolás. Számos tömörítő eljárás dolgozik a Huffman eljárás alapján, felhasználják például a JPEG és az MP3 tömörítésben is. A tömörített fájlban a kódtáblát is tárolni kell.
Példa: A szöveg: ALMA A FA ALATT
Gyakorisági tábla: gyakoriság A
6
L
2
M
1
F
1
T
2
szóköz
3
A kódolás egy bináris kódfa felépítését jelenti:
Tömörítés
11
A fáról leolvasható az egyes karakterek kódja: kód A
0
L
110
M
11110
F
11111
T
1110
szóköz
10
A szövegünk kódolva: 011011110010010111110100110011101110 Próbáljuk meg visszafejteni a kódot a táblázat alapján! Láthatjuk, hogy a visszakódolás egyértelmű, nem szükséges megjelölni a karakterhatárokat. Az eredeti szövegünk 15 karakterből áll, így ASCII kódolással 15 bájt helyet foglal. A kódolt változat 36 bites, vagyis csak 5 bájt.
A napjainkban egyik leggyakrabban használt ZIP tömörítő-eljárás a DEFLATE kódolást alkalmazza, amely az LZ77 és a Huffman kódolás kombinációja.