Portál AbcLinuxu, 1. května 2025 23:11
Můj nick je lzap. Já, lzap, objevil lzop. Program lzop komprimuje. Já nikoli. Tímto bych rád předešel dalším diskuzím: já nekomprimuji. A rychle už vůbec ne.
Utilitka lzop je ale pekelně rychlá - koprimuje 3-5x rychleji, než gzip -1, ovšem dosahuje o asi 10-15% nižšího komprimačního poměru. V časopise Linux FORMAT vyšel bezvadný článek na toto téma, a já se jal program lzop prozkoumávat: emerge lzo lzop
.
Když jsem proniknul do tajů knihovny lzo, zjistil jsem, že se jedná o blokový komprimační program, který napsal autor programu UPX - také docela rychlého a hodně, hodně moc přenositelného komprimátoru binárek. Docela mě to zaujalo a pokusil jsem se neúspěšně najít nějaký souborový systém, který by on-line komprimoval.
Některé mé adresáře (nesnáším "složky", zní to jak "vložky") obsahují totiž velmi mnoho textových souborů. Takový komprimovaný filesystém by se hodil. Určitě nějaký existuje (diskutujte!), ale myslím, že žádný z nich nebude podporovat lzo.
Jeden podvečer jsem věnoval kódování v jazyce C (velmi dlouho jsem vzpomínal na dereference pointerů a jiné záležitosti, které jsou mi u Javy cizí). Kromě toho, že jsem zjistil, že plugin Eclipse-CDT je úplně super a vůbec se nemusím nořit do tajů programů Autoconf/Automake, jsem musel konstatovat, že pomocí FUSE (Filesystem In Userspace) takovou utilitku asi nenapíšu.
Problém je ten, že FUSE funguje příliš nizkoúrovňově - implementuje funkce open, read a write. Ačkoli by nebyl problém vytvořit si vlastní cache pro čtení (blokový algoritmus lzo to navíc velmi usnadňuje) a pohlídat si vlákna, zápis by byl velmi neefektivní. Navíc, velikost komprimačních bloků by nebyla vždy stejná, jako bloky, kterými čte program a každý přístup bych musel "odskočit" na začátek souboru a zjist velikost bloku a zda je vůbec lzopem komprimován.
Aby to nebyl zas tak "neúspěšný" zápis, rozhodl jsem se alespoň publikovat svůj zálohovací příkaz. Se lzopem je zase o něco rychlejší:
tar --use-compress-program=lzop -cv ~ /etc | \ mkisofs -stream-media-size 333000 | \ cdrecord dev=/dev/hdc -fs=32m -dao tsize=333000s -
Existuje vůbec FS s podporou komprimace? Používáte komprimované adresáře? A vůbec, kolik sekund má 700MB CD?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.