tömörítés - compress
| Eredeti szerző (k) | Spencer Thomas |
|---|---|
| Első kiadás | 1985. február |
| Operációs rendszer | Unix , Unix-szerű , IBM i |
| típus | Parancs |
| 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
- : adatok tömörítése - Parancsok és segédprogramok hivatkozása, Egységes UNIX specifikáció , 7. szám a The Open Group
- ncompress - közkincs tömörítés/kicsomagolás megvalósítás POSIX rendszerekhez
- tömörítés - eredeti Unix tömörítés (tömörített archívumban)
- tömörítés - eredeti Unix tömörítés futtatható (gzip'd)
- Forráskód a tömörítéshez v4.0 (gzip'd sharchives)
- ZIP fájl, amely a tömörítő segédprogram Windows portját tartalmazza
- forráskódot az fcompress.c aktuális verziójához a tömörítésből
- bitcsoportok igazítása - A bitcsoportok igazításának magyarázata.
- lzws - Új könyvtár és CLI, örökölt kód nélkül implementálva.
- ruby -lzws - Rubin kötések streaming támogatással.
- compress.com - a fájlok tömörítésének hivatalos webhelye.