tömörítés - compress

tömörít / kicsomagol
Eredeti szerző (k) Spencer Thomas
Első kiadás 1985. február ; 36 évvel ezelőtt ( 1985-02 )
Operációs rendszer Unix , Unix-szerű , IBM i
típus Parancs
tömörítse .Z
Fájlnév kiterjesztés
.Z
Internetes média típusa
alkalmazás/x-tömörítés
Által kifejlesztett Spencer Thomas
Formátum típusa adattömörítés

A compress egy Unix shell tömörítő program, amely az LZW tömörítési algoritmuson alapul. A modernebb tömörítési segédprogramokhoz, például a gziphez és a bzip2 -hez képest a tömörítés gyorsabban és kevesebb memóriahasználattal működik, lényegesen alacsonyabb tömörítési arány árán .

A kibontás segédprogram visszaállítja a fájlokat az eredeti állapotukba, miután a tömörítő segédprogrammal tömörítették őket . Ha nincs megadva fájl, a szabványos bemenet tömörítve lesz a szabványos kimenetre.

A közelgő POSIX és Single Unix specifikációk felülvizsgálata során a tervek szerint a gzip formátumban használt DEFLATE algoritmust támogatják ezek a segédprogramok.

A program leírása

Fájlok tömörített borogatás általában adott a kiterjesztés „.Z” (mintájára a korábbi csomag program, amely használható a kiterjesztés „.z”). A legtöbb tar programoknak cső az adatokat borogatás adva a parancssori opció -Z„” (A tar program önmagában nem tömörít, csak több fájlt tárol egy szalagos archívumban.)

A fájlok a tömörítéssel visszaállíthatók eredeti állapotukba . A tömörítés megszokott művelete nem pusztán a fájl tömörítetlen másolatának létrehozása, hanem a tömörített fájl időbélyegzőjének és egyéb attribútumainak visszaállítása is.

Ha a fájl által termelt borogatás más rendszerekben, uncompress hordozók 9- 16-bit tömörítés.

Történelem

A tömörítésben használt LZW algoritmust 1983 -ban szabadalmaztatta a Sperry Research Center . Terry Welch 1984 -ben közzétett egy IEEE -cikket az algoritmusról, de nem vette észre, hogy szabadalmat kért az algoritmusra. Spencer Thomas, a Utahi Egyetem munkatársa vette át ezt a cikket, és 1984 -ben tömörítést hajtott végre , anélkül, hogy észrevette volna, hogy szabadalom függőben van az LZW algoritmuson. A GIF képformátum az LZW tömörítést is beépítette ilyen módon, és az Unisys később jogdíjat igényelt a GIF megvalósításáért. Joseph M. Orost vezette a csapatot, és együtt dolgozott Thomas és társaival. hogy elkészítse a tömörítés „végleges” (4.0) verzióját, és szabad szoftverként publikálja azt a „net.sources” USENET csoportnak 1985 -ben. A 4,558,302 számú amerikai egyesült államokbeli szabadalmat 1985 -ben adták ki, ezért a tömörítést nem lehetett jogdíjfizetés nélkül használni. a Sperry Research -hez, amelyet végül Unisys -be egyesítettek.

a compress bizonyos felhasználói csoportokból kiesett, mert az LZW algoritmust használja, amelyre Unisys szabadalom vonatkozik -emiatt a gzip és a bzip2 népszerűsége megnőtt a Linux -alapú operációs rendszereken az alternatív algoritmusok miatt, a jobb fájltömörítéssel együtt. A tömörítés azonban továbbra is jelen van a Unix és a BSD rendszereken, és a tömörítés és kicsomagolás parancsok is átkerültek az IBM i operációs rendszerbe.

Az amerikai LZW szabadalom 2003 -ban lejárt, így most az Egyesült Államokban közkinccsé vált. Az LZW -n minden szabadalom világszerte lejárt (lásd: Graphics Interchange Format#Unisys és LZW szabadalmi érvényesítés ).

A közelgő POSIX és Single Unix specifikációk felülvizsgálata során a tervek szerint a gzip formátumban használt DEFLATE algoritmust támogatják ezek a segédprogramok.

Speciális kimeneti formátum

A kimeneti bináris bitcsoportokból áll. Minden bitcsoport rögzített bitmennyiségű kódokból áll (9-16). Minden csoportot (az utolsó kivételével) igazítani kell a bitek számával, szorozva 8 -mal, és jobbra párnázva nullával. Az utolsó csoportot 8 -mal kell igazítani, és nullával kell párnázni. További információt az ncompress kiadásban talál .

Példa:

10 9 bites kódot, 5 10 bites kódot és 13 11 bites kódot szeretne kiadni. Most 3 bites csoportot szeretne kiadni: 100 bit, 50 bit és 143 bit.
  • Az első csoportnak ezután 100 bit adatnak kell lennie + 44 nulla bit kitöltésnek kell lennie ahhoz, hogy 72 bithez (9 bit * 8) lehessen igazítani.
  • A második csoportnak ezután 50 bit adatnak kell lennie + 30 nulla bit kitöltésnek kell lennie ahhoz, hogy 80 bithez (10 bit * 8) lehessen igazítani.
  • A harmadik csoportnak ezután 143 bit adatból és 1 nulla bit kitöltésből kell állnia, hogy 8 bithez igazodjon (csak 1 bájt, mivel ez a kimenet utolsó csoportja).

Ez valójában egy hiba. Az LZW nem igényel igazítást. Ez a hiba az eredeti UNIX tömörítési, ncompress, gzip és még a Windows port része. Több mint 35 éve létezik. Minden alkalmazás/x-compress fájl ezzel a hibával jött létre. Tehát be kell vennünk a kimeneti specifikációba.

Néhány tömörítési megvalósítás véletlenszerű biteket ír az inicializálatlan pufferből igazítási bitként. Nincs garancia arra, hogy az igazítási bitek nullák lesznek. Tehát a 100% -os kompatibilitás szempontjából a dekompresszornak egyszerűen figyelmen kívül kell hagynia az igazítási bitértékeket.

Lásd még

Hivatkozások

Külső linkek