DI RECENTE ACCOMAZZI...
CERCA
» Ricerca avanzata
MAILING LIST

Se vuoi iscriverti alla mailing list di Luca Accomazzi inserisci qui la tua mail:

Vuoi ricevere i messaggi immediatamente (50 invii / giorno) o in differita e in gruppo
(due invii / giorno)?

» Vuoi saperne di più?

Ridotto ai minimi terminali

La nostra esplorazione delle fondamenta Unix su cui si basa il sistema operativo Mac OS X questa volta ci porterà a esplorare i programmi per la compressione e decompressione degli archivi. Si tratta di una operazione di base che i nostri Macintosh fanno molte volte ogni giorno, spesso senza dircelo, perché molti documenti vengono internamente compressi automaticamente. Ogni immagine GIF e JPEG, ogni filmato QuickTime, le firme digitali e le connessioni sicure via Internet, taluni allegati di posta elettronica: sono tutte informazioni che il nostro calcolatore comprime mentre le crea e le utilizza. A questi si aggiungono i documenti che siamo noi a comprimere, esplicitamente, per scopi di archiviazione: magari mentre ci prepariamo a masterizzare un CD o a registrare una copia di backup del nostro disco rigido su un nastro.


Capire la compressione

Da quando esistono i calcolatori esiste la necessità di comprimere i loro documenti, per risparmiare spazio. Il padre fondatore della scienza della compressione è un informatico americano, il professor Huffman, che inventò la compressione che porta il suo nome e che ancora oggi viene utilizzata da tutte le macchine fax al mondo. Quando noi spediamo un fax, la macchina prima digitalizza l’immagine e poi la comprime per risparmiare sui tempi di trasmissione. Per comprimere, il processore del fax cerca sequenze di punti che si ripetono nella immagine (per esempio, una successione di cento punti tutti neri) e le sostituisce con una etichetta (per esempio, “sequenza numero uno”). Poi invia al destinatario una descrizione di tutte le sequenze (per esempio, “la sequenza numero uno contiene cento punti consecutivi tutti neri”) e la immagine compressa (per esempio “una copia della sequenza uno, poi un punto bianco, poi due punti neri, poi un punto bianco e poi ancora la sequenza uno”).
Questo tipo di compressione è semplice e veloce da eseguire e non comporta perdita di informazioni: quindi si può utilizzarla per qualsiasi documento digitale. Esistono anche forme di compressione, che per ottenere risultati superiori accettano la perdita di informazioni (in altre parole, il documento decompresso non è identico all’originale): si utilizzano esclusivamente per trattare immagini, audio e video. Per esempio, le immagini JPEG, i brani audio MP3 e i filmati QuickTime sono tutti compressi con perdita di informazione. Nel resto di questo articolo però noi ci dedicheremo esclusivamente alla compressione senza perdita di informazione, quella utilizzabile universalmente.


La compressione su Macintosh

Ogni sistema operativo registra insieme ai suoi documenti alcune metainformazioni (informazioni extra) che vanno preferibilmente preservate. Per esempio, nel Macintosh da sempre ogni documento viene accompagnato dalla sigla della applicazione che lo ha creato: è per questo che noi possiamo avere documenti di testo creati con BBEdit e documenti di testo creati da Explorer e documenti di testo creati da SimpleText, e ciascuno si aprirà nella sua applicazione se facciamo doppio-clic sopra. In Windows invece questo non è possibile, perché il sistema operativo del PC non si occupa di registrare quella informazione e quindi tutti i documenti di testo si aprono con una stessa applicazione, a prescindere dal loro contenuto e da chi li ha creati.
Un altro esempio: in Unix ogni documento viene accompagnato dalla data e ora in cui è stato letto per l’ultima volta. In Macintosh tradizionalmente si tiene traccia della data di creazione e dell’ultima modifica (accesso in scrittura) ma non della lettura.
Ogni sistema operativo dunque predilige un certo tipo di compressione, perché ogni formato di compressione registra alcune metainformazioni e non altre. Nei PC il sistema di compressione più popolare è lo zip, popolarizzato ai tempi dello MS-DOS dall’applicazione PKZIP, oggi diventata WinZip. Unix predilige da sempre il formato tar. In Macintosh la fa da padrone Stuffit: da anni ormai Apple inserisce in ogni Mac che esce dalla fabbrica e in ogni confezione di Mac OS una copia del programma gratuito Stuffit Expander, oggi giunto alla versione 7. Stuffit però è un programma di proprietà privata della società Aladdin Software, unica a poter sviluppare programmi che sono in grado di comprimere in quel formato. Si è insomma formato un piccolo monopolio naturale.
Con il passaggio dal vecchio Mac OS 9 al nuovo Mac OS X Apple ha spostato il Macintosh verso il mondo Unix e nel farlo ha necessariamente de-enfatizzato le caratteristiche peculiari del suo sistema operativo. In altre parole, oggi per la prima volta noi possiamo comprimere le nostre X-applicazioni e i nostri documenti usando anche i formati compressi che vengono dal mondo Windows e dal mondo Unix, stando certi di non perdere nulla di vitale. Quando ci proviamo, le sorprese non mancano.


Il compressore gratis

Tutte le copie di Mac OS X contengono il compressore standard Unix, “tar” (il nome derica dalla contrazione delle parole “tape archiver”, cioè, “archiviatore su nastro”). Per metterlo alla prova chi scrive ha preso una cartella contenente una copia del suo sito web, www.accomazzi.net: circa mille file tra immagini, filmati QuickTime, pagine web e base dati che occupano circa 40 MB di spazio su disco. Abbiamo poi provato a comprimere la cartella usando sia Stuffit ultima versione sia il comando tar da Terminale. Quest’ultimo si è rivelato più veloce e anche più efficace (vedere “Schiacciatina di file”).
Comprimere una cartella con il Terminale è davvero facile. Aprite il programma. Nella finestra bianca che appare scrivete tar -cpzf ~/Desktop/, poi digitate un nome per il vostro documento (per esempio archiviocompresso.tar.gz), battete uno spazio bianco, poi trascinate con il mouse la cartella che volete comprimere sopra la finestra del Terminale. Infine premete il tasto Invio.
Il bello di questo sistema è che Stuffit Expander è perfettamente in grado di decomprimere i documenti creati da tar, quindi possiamo tranquillamente spedirli a collaboratori ed amici che potranno utilizzarli anche se non sanno mettere mano al Terminale.


Un passo in più

In Mac OS X versione 10.2 esiste anche un altro compressore incorporato, ancora più potente ed efficace di tar: si chiama bzip2. (Chi usa ancora la versione 10.1 di Mac OS X può scaricare gratuitamente una copia di bzip2 dal sito svizzero www.entropy.ch).
Bzip2 però può comprimere solo un file e non una intera cartella. Per aggirare il problema possiamo prima utilizzare tar per compattare tutta la cartella in un singolo file e poi lanciare bzip2 per comprimere il risultato. Il comando da usare per la compattazione è identico a quello visto in precedenza ma senza il solo parametro z: avremo quindi tar -cpf eccetera. Per scatenare la compressione bzip2 useremo il comando bzip2 -f (spazio bianco) a cui faremo seguire il documento da comprimere. Anche in questo caso per la decompressione sarà sufficiente utilizzare Stuffit Expander.


Schiacciatina di file

Programma Estensione Formato Tipo compressione Dimensione Tempo richiesto Comando a Terminale
Originale Nessuna 37342523 -
Tape archiver .tar TAR Concatenazione 34099200 0:00:13 tar -cpf ~/Desktop/[nome desiderato].tar [trascinate qui la cartella]
Stuffit Deluxe .sit ATOM Stuffit 5 29242172 0:01:25
Stuffit Deluxe .sitx ATOM Stuffit X 27138543 0:09:27
Tape archiver .tar.gz GNU zip Lempel-Ziv 26613270 0:00:15 tar -cpzf ~/Desktop/[nome desiderato].tar.gz [trascinate qui la cartella]
Bzip2 .tar.bz2 GNU bzip Burrows-Wheeler 26323183 0:01:05 bzip2 -f [trascinate qui un file da comprimere]


Tar spiegato

Vi sarete forse chiesti cosa significhino esattamente le lettere cpzf messe dopo il comando tar. Questa tabella dovrebbe chiarirlo e aggiungere alcune altre utili possibilità
z comprimi con metodo Lempel-Ziv
p preserva le metainformazioni
c registra nellÕarchivio...
f ...il cui nome  specificato dopo la lettera f
e bloccati in caso di errore
r aggiungi ad archivio preesistente (usare al posto di c)
t lista il contenuto di archivio (usare al posto di cz)
x estrai (usare al posto di cz)
v sii verboso (stampa a video quel che stai facendo)


Questo articolo fa parte di uno dei miei percorsi. Se vuoi saperne di più su questo argomento, visita il resto del percorso cliccando qui.