Ok mi riallaccio al discorso di questa notte sul fatto che io non sono integralista, affermando che per ciò che mi riguarda non ho nulla in contrario che completi lusers possano usare Linux.
A questo punto però bisogna anche fornire loro gli strumenti adatti ad usarlo. Uno di questi potrebbe essere un sistema di compressione migliore dello zip, basato su un ragionamento simile.
Giusto per nota di cronaca facciamo un po’ di luce sui formati di compressione. Ai tempi del DOS, prima che Zip di Phil Katz divenisse lo standard, erano presenti diversi formati di archiviazione/compressione: zip, arj, arc, lha, lhz…. incompatibili tra loro.
Quando poi è arrivato Windows, lo zip è diventato uno standard de facto, grazie anche a WinZip. Poi visto che lo zip non è che avesse delle prestazioni di compressione eccezionali sono sorti i formati rar (v2) ed ace, con i loro tools per Windows, WinRAR e WinACE. Poi è stato il turno di RAR v3 che ha superato la compressione dell’ace e che a quanto ne so è il compressore migliore per ora.
Questo genere di archivi si differenzia in maniera totale da quello dei tar.bz2 e tar.gz usati sotto Unix/Linux. E il motivo è abbastanza semplice in realtà: tar è nato per essere utilizzato sui nastri di backup, quindi usa un sistema sequenziale non compresso, che poi viene completamente compresso con gzip o bzip2 (che non possono comprimere più di un file per volta), mentre zip, rar ed ace hanno l’indice dei file non compresso, ma solo i dati dei singoli file compressi, quindi non è necessario decomprimere tutto l’archivio per avere accesso ad un determinato file.
Questo li porta ad essere più semplici da usare quando si è in un ambiente desktop e gli archivi possono cambiare molto spesso.
Certo però rar, zip ed ace non sono adatti per lavorare sotto linux, soprattutto perché non salvano i permessi dei files. (e in particolare rar ed ace non sono formati aperti, per quanto di rar esista un decompressore opensource e ci siano sia rar che unrar per linux). Al contrario fare un’aggiunta su un file tar compresso richiede la decompressione dell’intero file, l’aggiunta in coda al tar, e poi la ricompressione del file ancora una volta per intero. Dire che è uno spreco di cicli di CPU è dir poco.
Quello a cui stavo pensando è la creazione di un nuovo formato di archiviazione, che utilizzi ebml per salvare i dati dei file, e poi gzip, bzip2 o rzip per comprimere i file (a seconda della loro dimensione). Ovviamente bisognerebbe unire a questo formato anche una serie di tools che permettano la gestione di questo nello stile di zip, unzip, tar etc etc, possibilmente command-line compatibili con gli altri tools.
Non sto dicendo che tar sia da eliminare, ma che sia inadatto alle esigenze desktop dell’attuale mercato di linux. Mentre è ancora valido per alcune cose come, per esempio, le release di sorgenti, dove tutti i file devono venire decompressi sempre assieme.
Beh questi ovviamente sono solo i miei 2 eurocents, per il resto, vedete voi.. un giorno inizierò a scrivere questo formato, allora vedremo come andrà a finire 🙂