En Guillem Cantallops Ramis de vegades escriu per aquí...
Record que fa un munt d'anys quan encara no coneixia Linux ni BSD ni res semblant, jugava a convertir el DOS en una cosa útil. Per exemple, canviava el COMMAND.COM pel 4DOS.COM. I provava compressors. Tots, més de cent, sense mirar llicències perquè no sabia ni que existien. No tenia ni accés a Internet, m'havia de baixar les coses (normalment shareware) de les BBSs o les havia d'obtenir dels disquets de les revistes, o dels amics, amb mesos o fins i tot anys de retràs. Era divertit.
Contada la batalleta, supòs que avui tothom està més o manco com jo, totalment content amb el tar més gzip o bzip2. Ja sabeu que el tar empaqueta les coses i el gzip i el bzip2 comprimeixen, normalment fitxers generats amb tar. Un disseny modular clàssic del món UNIX: cada qual fa la seva feina, la fa bé, i està preparat per col.laborar amb els altres.
Bé, també és útil poder descomprimir ZIPs i RARs perquè encara te'n trobes. El RAR és més sofisticat, té més opcions, i (tardant més i consumint més recursos) comprimeix més, però jo diria que no és tan popular com el ZIP. El ZIP és omnipresent: segur que sabeu que els documents d'OpenOffice són realment fitxers XML comprimits amb ZIP, i els JARs de Java també són una estructura senzilla de directoris i fitxers comprimits amb ZIP. Si teniu un Mac encara vos trobareu fitxers sit o hqx, però darrerament veig que està molt més de moda fer servir imatges de disc amb extensió dmg (opcionalment comprimides o xifrades) per distribuïr programes de Mac OS X.
Au, va, ara sí... contada la SEGONA batalleta entraré en matèria. Aquest post es titula "màxima compressió" perquè avui he recordat aquells temps de proves de compressors, de pensar com s'hauria de fer un bon benchmark i d'entendre què era l'entropia a base d'experimentar, sense background, sense conèixer les paraules "benchmark" o "entropia". Fent una volta pels paquets de Debian Experimental m'he trobat el compressor (o millor dit, l'archiver) 7-Zip.
Supòs que ja sabeu com va Debian Experimental. No és una distribució autocontinguda com ara Sid (unstable), Sarge (testing) o Woody (stable), sino que agrupa tot tipus de paquets experimentals (d'aquí li ve el nom :-P) i les seves dependències solen estar totes a Debian Sid. Per tant, si voleu tenir Debian Experimental, una petita passa més que Debian Sid ;-) senzillament duplicau les linies que tengueu al /etc/apt/sources.list i a una de les còpies canviau sid o unstable per experimental. Després ja podreu fer, entre moltes altres coses, un apt-get install p7zip.
Del p7zip només vos contaré un parell de coses. Funciona en pla archiver, o sigui que en principi no necessita tar. La comanda és 7z (funcionalitat total, fa servir plug-ins enllaçats dinàmicament per gestionar tot tipus de formats) ó 7za (executable stand-alone, no soporta tants de formats). El format (i l'extensió) és 7z. Recorda molt als archivers d'un temps perquè té un munt de funcions que van més enllà d'empaquetar i comprimir fitxers, per exemple permet xifrar les dades amb AES-256 o generar fitxers auto-extraibles (SFX, amb un petit descompressor executable encastat amb les dades) i crec que és capaç de fer de front-end per gestionar automàticament tots els altres tipus de fitxers empaquetats o comprimits tipics de Linux, o sigui que vendria a ser com un WinZip o un WinRAR però de linia de comandes (mmmh... pareix que hi ha GUI per a Hasefroch) i amb llicència LGPL.
I això de la "màxima compressió" d'on surt, vos demanareu? Idò molt fàcil. Sabeu que el zip és molt millor que no comprimir gens, però en general el gzip li passa davant i tots dos són molt ràpids i portables. També sabeu que el bzip2 comprimeix molt més però és més lent i menja més recursos. Idò el 7z continua aquesta tendència, amb totes les opcions al màxim (mirau el manual!) és lent com ell tot sol però comprimeix una barbaritat, d'un 30% a un 50% millor que el zip segons l'autor.
He fet una prova amb el codi font del linux 2.6.9, per començar a agafar-li una mica el truc al 7z (alerta que una prova tota sola no vol dir res, experimentau vosaltres mateixos amb les dades que més vos interessi comprimir!). El tar sense comprimir són 195.14MB. Passat per gzip són 43.80MB, i per bzip2 són 34.58MB. Sense arguments especials, de manera que el gzip ha comprimit rapidissim a nivell 6 (pot arribar fins a 9), i el bzip2 ha comprimit més lent a nivell 9 (per defecte va al màxim).
En canvi amb el 7z amb totes les opcions orientades a màxima compressió sense escatimar temps ni recursos, el fitxer s'ha quedat en 28.45MB. Ha tardat molt més que el bzip2, però també ha comprimit molt més que ell, la qual cosa és bastant impressionant. M'ha agradat. Molt. De vegades desitges arribar al màxim teòric (ja sabeu, allò de l'entropia i els bits per byte que deia en Shannon però més formalment que jo ;-) i amb el 7z t'hi pots acostar una mica més. Ei, potser aquell fitxer que no et cabia al DVD ara t'hi cabrà! :-P