rzip - rzip
| Eredeti szerző (k) | Andrew Tridgell |
|---|---|
| Stabil kiadás | 2.1 / 2006. február 14 .
|
| Beírva | C |
| Operációs rendszer | Unix-szerű |
| Méret | 46K (forráskód tarbal, gzipped) |
| Weboldal | rzip |
Az rzip egy hatalmas méretű adattömörítő számítógépes program, amelyet a kezdeti LZ77 -stílusú karakterlánc -egyeztetés köré terveztek egy 900 MB -os szótárablakban, majd a bzip2 -alapú Burrows – Wheeler -transzformáció és entrópia -kódolás ( Huffman ) 900 kB -os kimeneti darabokon.
Tömörítési algoritmus
Az rzip két szakaszban működik. Az első szakasz megkeresi és kódolja a bemeneti fájlban a sokszorosított adatok nagy darabjait potenciálisan nagyon nagy távolságokon (900 MB). A második szakasz szabványos tömörítési algoritmust ( bzip2 ) használ az első szakasz kimenetének tömörítésére.
Manapság meglehetősen gyakori, hogy tömöríteni kell a távolsági redundanciákat tartalmazó fájlokat. Például egy otthoni könyvtár készlet tömörítésekor több felhasználónak lehet másolata ugyanabból a fájlból, vagy egészen hasonló fájlokból. Gyakori az is, hogy egyetlen fájl van, amely nagy távolságban nagy duplikált darabokat tartalmaz, például PDF -fájlok, amelyek ugyanazon kép ismételt példányait tartalmazzák. A legtöbb tömörítő program nem tudja kihasználni ezt a redundanciát, és így sokkal alacsonyabb tömörítési arányt érhet el, mint az rzip.
A közbenső interfész a két szakasz között egy bájtra igazított adatfolyamból áll, amelynek két parancsa van, egy literális ("add") hosszúsággal és adatokkal:
type:8 = 0 => literal/add range of count bytes count:16 = 1..65535 data:8..∞ = literal data to be inserted (n whole bytes)
és egyezés ("másolás") hossz- és eltolási paraméterekkel:
type:8 = 1 => match/copy range of count bytes count:16 = 31..65535 offset:32 = offset to position to be copied from
A 65 535 bájtnál nagyobb szó szerinti vagy egyezési/másolási hosszúság több utasításra oszlik. A folyam végét egy nulla hosszúságú literál/add (típus = 0, szám = 0) parancs jelzi, és közvetlenül utána egy 32 bites CRC ellenőrző összeg.
Referencia megvalósítás
Az rsync algoritmusán alapuló gördülő ellenőrző algoritmus használható a potenciális egyezések megkeresésére egy ilyen nagy adathalmazból. Amint a hash -csoportok megtelnek, a korábbi kivonatok ("címkék") kétszer kerülnek elvetésre. A címkéket úgy dobják el, hogy meglehetősen jó lefedettséget biztosítsanak, és a távolság növekedésével fokozatosan csökken az egyezési részletesség. Ez a megvalósítás nem keresi a 31 egymást követő bájtnál rövidebb egyezési hosszúságot.
Előnyök
A legfontosabb különbség az rzip és más jól ismert tömörítési algoritmusok között az, hogy képes kihasználni a nagyon nagy távolságú redundanciát. A gzip -ben használt jól ismert deflate algoritmus maximum 32 KiB előzménypuffert használ. A bzip2 -ben használt Burrows – Wheeler transzformációs blokk -rendezési algoritmus 900 KiB -ra korlátozódik. Az rzip előzménypuffere akár 900 MiB hosszú is lehet, több nagyságrenddel nagyobb, mint a gzip vagy a bzip2. Az Rzip gyakran sokkal gyorsabb, mint a bzip2, annak ellenére, hogy a bzip2 könyvtárat használja háttérként. Ez azért van, mert az rzip zsugorított adatokkal táplálja a bzip2 -t, így a bzip2 -nek kevesebb munkát kell végeznie. Egyszerű összehasonlításokat végeztek (bár túl kicsik ahhoz, hogy mérvadó viszonyítási alap legyen).
Hátrányok
Az rzip nem minden célra alkalmas. Az rzip két legnagyobb hátránya, hogy nem csövezhető (tehát nem tud szabványos bemenetről olvasni vagy szabványos kimenetre írni), és nagy memóriamennyiséget használ: egy nagy fájl tipikus tömörítési futtatása több száz megabájtot is igénybe vehet RAM -ból . Ha sok RAM tartalék van, és nagyon nagy tömörítési arányra van szükség, akkor az rzip-et kell használni, de ha ezek a feltételek nem teljesülnek, alternatív tömörítési módszereket kell használni, mint például a gzip és a bzip2, amelyek kevésbé memóriaigényesek. rzip helyett. Legalább egy javítás lehetővé teszi a csővezetékek csatlakoztatását.
Történelem
Az rzip -et eredetileg Andrew Tridgell írta PhD -kutatásának részeként.
Alternatív megvalósítások
lrzip
| Eredeti szerző (k) | Con Kolivas, Peter Hyman, Andrew Tridgell |
|---|---|
| Első kiadás | 2008. január |
| Stabil kiadás | 0.631 / 2016. október 20 .
|
| Beírva | C, C ++ (libzpaq) |
| Operációs rendszer | Unix-szerű |
| Méret | 246K (forráskód tarbal, gzipped) |
| Weboldal | GitHub |
Az lrzip (Long Range ZIP) az rzip továbbfejlesztett változata. Fájlformátuma nem kompatibilis az rzip fájlokkal. A következő fejlesztésekkel rendelkezik:
- LZMA , LZO , DEFLATE , Bzip2 és ZPAQ tömörítés (csak a Bzip2 -vel szemben)
- Nincs szótárkorlát, még a rendelkezésre álló RAM sem korlátozza
- Képesség az adatok tömöríthetőségének tesztelésére tömörítés előtt, megakadályozva a számítógép időveszteségét a tömöríthetetlen adatok tömörítésével
- Csatlakoztatási képesség szabványos bemenetről / szabványos kimenetről (tömörítési arányvesztéssel)
- Képes letiltani az utolsó fázisú tömörítést egy másik kompresszorral való használatra
- Opcionális AES-128 titkosítás
rzip64
Az rzip64 az rzip kiterjesztése nagyon nagy fájlokhoz, amelyek több processzormagot is képesek párhuzamosan használni. Vannak benchmark eredmények. A legfontosabb azonban az, hogy az rzip64 bármikor megszakítható. Ezáltal egy futó tömörítési feladat (amely nagy fájlok esetén könnyen több órát is igénybe vehet) még a rendszerkarbantartó újraindítását is túléli anélkül, hogy elveszítené a már befejezett munkát, és később folytatható. Az rzip64 fájlformátuma megegyezik az eredeti rzip fájllal.
ISMÉTLÉS
A REP az rzip algoritmus alternatív megvalósítása, amelyet Bulat Ziganshin használt a FreeArc archiválójában, mint az LZMA/Tornado tömörítési algoritmusok előfeldolgozója. A FreeArc-ban az REP nagy távolságú egyezéseket talál, majd az LZMA tömöríti a fennmaradó adatokat. Például a 2 GB RAM -mal rendelkező számítógépen az REP legalább 512 bájt hosszúságú egyezéseket talál az 1 GB -os távolságokig, majd az LZMA megtalálja a fennmaradó egyezéseket a 128 MB -os távolságon belül. Így együtt dolgozva a lehető legjobb tömörítést biztosítják 2 GB RAM költségkeret mellett.
Mivel a REP az adatfolyamok dekompressziójára és az LZMA -val való együttműködésre van optimalizálva, bizonyos különbségek vannak az eredeti RZIP implementációhoz képest. Először is alapértelmezés szerint csak 512+ bájt hosszúságú egyezéseket talál, mivel a benchmarking bebizonyította, hogy ez az optimális beállítás a teljes REP+ LZMA tömörítéshez. Másodszor, körülbelül 1/2 RAM hosszúságú csúszó szótárt használ, így a dekompressziónak nem kell újraolvasnia a kicsomagolt fájl adatait. A REP előnye a többszörös gördülő hash, amely gyorsan kiszámítható és közel ideális eloszlású.
A nagyobb minimális egyezési hossz (512 bájt, míg az rzip 32 bájtja) további sebességoptimalizálást tesz lehetővé, így a REP nagyon gyors tömörítést biztosít (körülbelül 200 MB/s Intel i3-2100 esetén).
SREP
Az SREP (SuperREP) a Tridgell LZ -kompresszorról alkotott elképzelésének megvalósítása, amely nem tárolja a szótárát a RAM -ban, helyette a feldolgozott blokkok SHA1 kivonatait használja tartalmuk összehasonlítására. Lehetővé teszi, hogy a program tömörítse a rendelkezésre álló RAM -nál körülbelül 10 -szer nagyobb fájlokat. A dekompressziót vagy a fájl kicsomagolt részéből származó adatok olvasásával, vagy a jövőbeli egyezések memóriában való tárolásával hajtják végre (jövő-LZ tömörítési algoritmus). Természetesen a jövőbeli LZ tömörítéshez 2 bemeneti fájlra van szükség, de a dekompresszióhoz apró memória szükséges. Egy kísérletben a 22 GB -os fájl tömörítése, minimális egyezési hossza 512 bájt, és a teljes 22 GB -os szótár mindössze 2 GB RAM -ot igényelt a dekompresszióhoz.
Lásd még
- Listája archív formátumot , összehasonlítása tömörített formátumok
- Listája fájl tömörítő , összehasonlítása fájl archivers
Hivatkozások
Külső linkek
- rzip
- lrzip- az rzip továbbfejlesztése, amely lehetővé teszi, hogy a bzip2 második szakaszának kicserélését LZMA , LZO helyettesítse , vagy nincs második lépcső (nyers, csak szótári tömörítés). A szerző Con Kolivas, aki kijelenti, hogy az „lrzip” a „Long Range ZIP” rövidítése.
- rzip64- párhuzamos fejlesztés az „rzip” -hez Kay Gorontzi stop-and-go módjával.
- REP - továbbfejlesztett RZIP implementáció, amelyet az LZMA -val együtt használtak
- SREP - az első LZ kompresszor, amely kevesebb RAM -ot használ, mint a szótár mérete
- DataCompression.info - LZ77/LZSS és származékai