Zstandard, a zstd tömörítő használata

Ma újra egy tömörítő programmal foglalkozom. A neve ZSTD és csak azért elő, mert olvastam róla egy cikket, és még soha nem is hallottam róla… Így körbejárjuk mit tud és milyen eredményeket ad. A Zstandard zstd néven fut, egy viszonylag új tömörítési eszköz, amelynek premierje 2015-ben volt. A mérnökök a Facebook-on hozták létre, hogy javítsák a régóta működő eszközök, például a gzip sebességét és tömörítési arányát. Gyorsan szabványos tömörítő eszközzé vált számos Linux disztribúcióban, ezért most itt az alkalom, hogy megtanuljuk használni. Nagyjából ennyi volt a bevezetés a cikkben, és felkeltette az érdeklődésemet.

Zstd tömörítő telepítése

A Zstandard alapértelmezés szerint nem szerepel minden Linux disztribúcióban. Ha a rendszeredre még nincs telepítve, telepítéséhez használd a megszokott parancsokat. Általában a zstd néven lesz, és ahogy a főbb csomagkezelési módokat nézegettem nagy gondot nem okozhat, hiszen megtalálható a tárolókban.

Ezen az oldalon sok teszt, és nagyon hasznos dolog lesz elérhető, így mindenképp nézz rá! https://facebook.github.io/zstd/

Bár a fenti oldalon is vannak tesztek, összehasonlítások, de ez nekem nem felelnek meg. Miért? Mert eltérő gépen, eltérő fájlokon nagyon eltérhetnek az eredmények. Így magát az ismerkedést kiegészítem egy teszt eredmény beillesztésével is.

Alap tömörítés

A zstd legegyszerűbb formában történő használatához, az összes alapértelmezett beállítással kezdünk. Ami a napi szintű rutin, van egy tömörítő és be akarunk gyorsan tömöríteni valamit, de sem az idő, sem pedig a tömörítés mértéke nem érdekes. Nulla vacakolás, csak legyen betömörítve.

A szintaktika egyszerű: a zstd parancsot, meg a tömöríteni kívánt fájl nevét kell megadni. Ideális, nem kell a kapcsolókra emlékezni.…

Ez új fájlt készít a fájlból, tömörítve és .zst kiterjesztéssel.

Én egy nagy könyvtárat tar-oltam be, ami így egy nagy, de tömörítés nélküli fájl lett. Abban nem nagy értelem van, hogy pár kilós txt.-et tömörítsek tesztnek, és azt számolgassam, hogy pár bájt eltérés van és ezred másodperc a beállítok közt…

Maga a könyvtár, amit használtam a tar összeállításához minden elképzelhetőt tartalmaz, videó, hang, ogg, mp3, erősen tömörített fájl, sima txt, doksik, és képek, azaz ha neked csak txt-k vannak amiket jól lehet tömöríteni, akkor nagyon más eredményt kapsz, ha meg erős, modern tömörítésű videóid, akkor is nagyon-nagyon más eredményed lesz.

A méréshez standard time parancsot használtam, de ez nem fog a parancsok előtt látszani, kezdőket megzavarhatja, hogy azt is be kell-e gépelni.

zstd Mentes.tar

Mentes.tar : 57.04% (3511541760 => 2003029778 bytes, Mentes.tar.zst)
user=3,50s system=1,41s cpu=154% total=3,168

Méretben kb. az általam megszokott környékén van, az idő meglepett, mert elkezdtem írogatni pár mondatot ide, és már kész is volt.

Amit tudni érdemes, intelligensen nem törli az eredeti fájlt.

Ha több fájlt akar egybe tömöríteni, akkor

zstd példa1.txt példa2.txt példa3.txt

illetve:

zstd példa *.txt

A metódust már ismerjük, ahogy látni nem egy agyonbonyolított az alap használata.

Két érdemi ismérve van egy tömörítőnek: gyorsaság és a méret. Ez a zstd nagyon intelligensen kezeli ezeket, be lehet állítani egyszerűen.

Gyors tömörítés

Ez a sebességre helyezi a hangsúlyt, és a tömörítési arányt háttérbe szorítja. Ugyanezt a fájlt most tömörítsük össze a „gyors” megoldással.

zstd --fast Mentes.tar

Mentes.tar : 57.62% (3511541760 => 2023425695 bytes, Mentes.tar.zst)
user=1,65s system=1,21s cpu=161% total=1,771

Gyorsabb lett? Volt durva méret növekedés? Hm… igencsak kellemes meglepetés volt a gyorsasága.

Amit rögvest észleltem, hogy az előbbi tömörítvényt nem töröltem ki és intelligensen rákérdezett, hogy felülírja azt?

De a méret is számít!!

A spektrum másik végén utasíthatjuk a zstd-t nagyobb tömörítés használatára, ami miatt egy "kicsit" tovább fog tartani a folyamat. Ezt írja is a cikk amit olvastam, de a kicsit tovább tart elég tág fogalom, így teszteljük ezt is le.

A Zstandard alapértelmezett tömörítési szintje 3. A --fasts a tömörítési szintet 1-re csökkenti. Bármely tömörítési szintet megadhatunk, egészen 19-ig. Ha már fontos a méret, és az idő nem, akkor legyen a legerősebb tömörítés, és nézzük meg, hogy mi változik:

zstd -19 Mentes.tar

Mentes.tar : 56.38% (3511541760 => 1979928090 bytes, Mentes.tar.zst)
user=431,72s system=2,29s cpu=100% total=7:11,62

Ne feledd! Ez az alapértelmezett legerősebb tömörítés, így szemléld az adatokat! A lassulás drasztikus, így mindenképp a saját igényeidhez teszteld le. Sima txt, doc és egyébnél nagyobb a javulás méretben, de ha nincs komolyabb oka a nagyon erős tömörítésnek, nem feltétlen érdemes ennyit várni rá...

A normál 1...19 közti mód felett is van!

zstd --ultra -22 Mentes.tar

Mentes.tar : 55.01% (3511541760 => 1931603102 bytes, Mentes.tar.zst)
user=707,01s system=3,15s cpu=100% total=11:48,77

Ahogy látni: nekem, az adott fájlon, ami elég nagy és vegyes tar, nem feltétlen érdemes az extra magas arányt a gyorsaság rovására emelni. Kisebb lett, de az idő is megugrott!

A könyvtárak tömörítő módja

Sejthető, hogy alapból nem tud könyvtárakat tömöríteni, mert ha egy nagyobb könyvtárból előre tar-t készítek, annak oka van. De ezt egy lépésben is megtehetjük:

tar --zstd -cf example.tar.zst example/

Itt a megszokott mód használjuk a tar parancsot, ami kezeli a zstd tömörítést. Ha nem használtad még a tar-t ilyen mód figyelj arra itt meg kell adni a tömörítvény nevét is, míg eddig automatikusan felvette a tömörítendő fájl nevét és kapott egy kiterjesztést. Itt is használhatjuk a extra erős tömörítést, de kicsit összetettebb a parancs:

tar -I 'zstd --ultra -22' -cf example.tar.zst example/

Nem agysebészet, de figyelni kell a idézőjelekre.

A könyvtár betarolása és a tömörítés nagyon picit hosszabb. Mint a fájltömörítés, és a tömörítési arány és idő is hasonlóan alakul.

Érdekességképp a linux-5.12-rc5 kernel forráskódját leszedtem és kicsomagoltam. Arra két tesztet futtattam. Az egyik sima alap tömörítés. A másik meg a maximális 22-es kapcsolóval. Az eredeti fájl, amit le tudsz tölteni az 190317221 volt.

tar --zstd -cf example.tar.zst linux-5.12-rc5/

user=4,17s system=1,35s cpu=71% total=7,696

A mérete 181994872, ami alapból kisebb, mint a standard tar.gz. Ez már azért jobban néz ki.

tar -I 'zstd --ultra -22' -cf example.tar.zst linux-5.12-rc5/

user=593,33s system=1,77s cpu=99% total=9:55,27

Durva idő, a 121072317 méret azért nem kicsit kevesebb :)!

Így elmondhatjuk, ha tömörítetlen (nem audio, videó, vagy más pluszban már nem tömöríthető) az anyag, forráskód, szövegfájl stb. akkor igen szép eredményt lehet elérni.

A tar-olt és tömörített fájl szabályos kicsomagolása:

tar -I zstd -xvf example.tar.zst

Ha többet akarsz megtudni róla, vagy éppen feltűnt, hogy a zstd kicsomagolásáról nincs minta, akkor a man zstd és a help…

Hozzászólások

Köszönöm a leírást,

Értékelés: 

0
Még nincs értékelve

Köszönöm a leírást, felkeltetted az érdeklődésem, mert hallani, már hallottam a ZSTD-ről, de még sosem próbáltam.

Vagy a zip, vagy a rar-t használom parancssorból - mivel anno majd mindenki ezt használta win alatt + arj. Ez most persze mellékes de nálam ez az ok.

Azt szeretném kérdezni, hogy csinálnál egy összehasonlítást esetleg ugyanezekkel az adatokkal, mekkorárára és mennyi idő alatt tömörítenek a zip és rar tömörítők leggyorsabban és legnagyobb hatásfokkal?

Ha nincs kedved és időd, akkor szívesen megcsinálom én is.

Köszi :)

Összehasonlítottam

Értékelés: 

0
Még nincs értékelve

Összehasonlítottam a ZSTD és a RAR-t. Anno a RAR-t hivatalosan is megvettem, mert mindig azt használtam - igazából a mai nap is azt használom - Linux alatt is.

Még a DOS-s időkből, mikor floppyra arhiváltunk akkor az ARJ volt a legnépszerűbb, illetve a ZIP. De, mivel az 5,25 floppy nagyobbra formatáltuk 1,2Mb-nál 1,51Mb-ra. Az 1,44Mb-s floppy lemezekkel mindig voltak gondok, úgy is hogy csak simán 1,44-re formatáltuk csupán az állásban is letérdeltek, vagy a metrón szállítás után megadta magát, így én 5,25-t használtam. Azt hozzáteszem, hogy nem gagyi lemezeket vettünk - de ez már rég történelem.

Az ARJ-nek volt olyan opciója, hogy a rendelkezésre álló helyre csomagol, majd kéri a következő lemezt, így ezt használtam. Majd mikor a RAR megjelent és elterjedt/népszerűvé vált én is kipróbáltam. Majdnem ugyanazokat a parancsokat és kapcsolókat használta.

Szóval kipróbáltam könyvtárakkal és mindenféle file-l. A maximális kompresszióval kicsit jobban tömörít a TAR-ZSTD metodika. 1,2Gbnál nálam kb 10Mb különbséggel, mint a RAR m5 maximális kompresszióval. Időben - nem mértem, de a TAR-ZSTD sokkalta hosszabb időt vesz igénybe.

Nagy hátránynak érzem, hogy könyvtárat alapból nem csomagol a ZSTD. Azt is megnéztem, hogy ha belenéznék DC-vel, akkor kb 2perc mire tallózható, míg a RAR szinte azonnal. Szóval jobban tömörít, de nagyságrenddel lassabb a kezelése.

Ha gondolod, akkor csinálok egy hasonló kis leírást a RAR-ról. Olyat mint amit Te készítettél a ZSTD-ről.