pigz – gyors, többmagos tömörítés Linux alatt

Linux scriptek

Talán az egyik legunalmasabb teendő a konvertálás mellett a tömörítés. Bár az utóbbi időben az olcsó, és megnövekedett tárhelyek miatt egyre kevesebbnek tűnik a tömörítés értelme, de sokan még ragaszkodunk hozzá. Miért? Mert így egyben van az összes fájl, amit egyben akarunk tartani. Nem törlünk, mozgatunk ki egy könyvtárból semmit, és nem veszelődik el semmi fontos. Én párszor jártam úgy, hogy egy-egy fájlt könyvtárból kimásolás helyett átmozgattam egy másik projektbe, ami kellemetlen volt, amikor az eredetibe keresi az ember… Általában a rar, a zip stb. tömörítvényeket használjuk, ami nagyon jó, de van egy hibájuk. A hagyományos tömörítőket rég készítették, amikor egy-két processzormag állt rendelkezésre, így nem használják ki a mai sok magot, szálat. Ez lassú. Nagyon lassú. Ezért kerestem egy másikat, ami kiküszöböli a hibát és megfelelően kezeli többmagos feladatokat is.

Gyors tömörítés, méretnövelés nélkül

Több ilyen projekt is létezik, hiszen sokunknak kellemetlen a lassú, egy magot használó tömörítés. Én most a pigz-et mutatom be. Bár még nem olyan régóta használom, de elégedett vagyok vele.

A telepítésre egyszerű, a legtöbb Linux rendszerben a tárolókban jelen van. Tedd fel, ahogy szoktad.

Arch Linux:
$ sudo pacman -S pigz

A CentOS 8/7/6 :
$ sudo yum install pigz

A Debian :
$ sudo apt-get install pigz

A Fedorán :
$ sudo dnf install pigz

Az Ubuntu , Linux Mint :
$ sudo add-apt-repository univerzum
$ sudo apt install pigz

Az openSUSE-n :
$ sudo zypper install pigz

Mivel a pigz több szálon tömörít, több processzormagot használ, ezért sokkal gyorsabban képes archiválni a nagyobb fájlokat, mint a gzip. Egyszerűen fogalmazva: a pigz megteszi azt, amit a gzip tesz, de a tömörítés során több processzormagra osztja a munkát, és jelentősen meggyorsítja a tömörítési / dekompressziós folyamatot. Amit nem tud – és ez ki kell emelni – jobban tömöríteni, mint a gzip. Esetileg minimális eltérás lehet a méretben, de jelentős méretcsökkenés nem. Plusz van egy másik nagy hiányossága, amit kicselezünk!

A pigz használata Linux alatt

pigz amittömöríteniakarsz

Na ezt NE így használd, bár a leírások ezzel kezdik az ismertetést! Ez automatikusan törli az eredeti fájl, ami egyrészt logikus, hiszen már letömörítetted, akkor minek foglaljon helyet a gépen? Másrészt kellemetlen, ha nem ez a célod, vagy valami gond adódott a tömörítés alatt. Én a

pigz -k amittömöríteniakarsz

megoldást jobban kedvelem. Ez nem töröl semmit.

Az archivum tartalmát kilistázhatod:

pigz -l archiv.gz

Ilyenkor a tartalmát és a két méretet (tömörítvény, eredeti) a százalékos nyereséget és a fájl nevét kapod meg.

Itt is skálázhatod a tömörítés erejét, ahogy a többinél is. Az erősebb tömörítés kisebb méret mellett lassabb lesz. Így összehasonlításkor figyelj erre, a hagyományos tömörítődnél nem biztos, hogy ugyanaz a tömörítési módszer az alapértelmezett.
A pigz is egy szám, 0..9 közti értéket használ ehhez.

  • Lassú és legjobb tömörítés (-9)
  • Leggyorsabb és kevesebb tömörítés (-1)
  • Nincs tömörítés (-0)
  • Alapértelmezett tömörítés (-6)

Én nem nagyon látom értelmét nem a -9 beállítást használni, ha ha jobb géped van. Még így is sokkal gyorsabb, mint a többi, és jobb a kompresszió, kisebb a fájl.

A kicsomagolás is egyszerű:

pigz -d archiv.gz

vagy

unpigz archiv.gz

Ha az a célod, hogy minden alkönyvtárban lévő összes fájlt egyeséve összetömöríts, akkor a

pigz -r ./

lesz a jó megoldás.

Itt kell kitérni egy kelletlenségre.

A pigz nem tud könyvtárakat tömöríteni!

Ha ilyen béna, hogy az egyik legfontosabb funkciót nem tudja, akkor minek mutatod be? Azért mert bár önmagában ezt nem tudja, de a tar (mindenhol jelen lévő) kis programmal kombinálva ez már nem lehetetlen. A tar egy csomagoló, de nem tömörítő program, így ha azzal összecsomagoljuk a fájlokat, akkor azt már tömöríteni tudjuk. Ezt nyilván nem két lépésben, hanem egy pipe megoldással oldjuk meg:

tar cf - könyvtar/ | pigz > könyvtár.tar.gz

Szuper. Illetve megoldható egy másik módszerrel:

tar --use-compress-program=pigz -cf yourfile.tar.gz folder1 folder2

Bármelyiket választod, gyorsabb lesz, mintha más programmal tömörítenél, még úgyis, hogy előbb a tar becsomagolja a fájlokat. Nem a becsomagolás, hanem a tömörítés a lassú egy magon!

Ha valami miatt korlátozni szeretnéd a használt szálakat, akkor a -p# kapcsolóval teheted meg, ahol a # a szálak száma. Én nem használom 🙂

Itt is megadhatsz más kimeneti formátumot

-K zip formátumba
-z zlib, .zz formátumba

tömörít. Ez akkor fontos, ha van esélye, hogy olyan gépre kerül a tömörítvény, ahol nincs gzip kompatibilis program. Aminek kicsi az esélye, de előfordulhat.

Csak hasonlításképp: zip tömörítővel 29,332 mp volt a doksi könyvtáram (2,6giga), a tar+pigz-vel 5,653mp a tömörítés. Ez természetesen függ majd a magok számától is, de a legtöbb esetben gyorsabb lesz a munka.

Arch Linux alatt teszteltem 2020-ban, június elején.

Related Posts