Archiviatore di file
# Archiviatore di file

Un archiviatore di file (in inglese file archiver) è un programma informatico che combina insieme un numero di file in un unico file archivio, o in una serie di file archivio, per un più facile trasporto o memorizzazione. Molti archiviatori di file utilizzano formati archivio che forniscono una compressione dei dati senza perdita per ridurre la dimensione dell'archivio, che è spesso utile per trasferire un alto numero di file singoli attraverso una rete ad alta latenza come Internet.

Gli archiviatori più elementari si limitano a prendere un elenco di file e a concatenare sequenzialmente i loro contenuti nell'archivio. In aggiunta l'archivio deve anche contenere alcune informazioni almeno riguardo ai nomi e alle lunghezze dei file originali, affinché sia possibile la corretta ricostruzione. La maggior parte degli archiviatori memorizzano anche i metadati riguardanti un file forniti dal sistema operativo, come la stampa degli orari, la proprietà e il controllo gli accessi. 2 Il processo di creazione di un file archivio è chiamato archiving ("archiviazione") o packing ("impacchettamento"). La ricostruzione dei file dall'archivio è denominata unarchiving ("disarchiviazione"), unpacking ("spacchettamento") o extracting ("estrazione").

## Discussione

### Strumenti archiviatori Unix

Diversamente da strumenti integrati di archiviazione e compressione come PKZIP, WinZip, e WinRAR, gli strumenti Unix ar, tar, cpio (rispettivamente per "archiver", "tape archiver" e "copy in/out") fungono da archiviatori, ma non da compressori. Gli utenti degli strumenti Unix aggiungono normalmente la compressione comprimendo il risultato dell'"impacchettamento" (e decomprimendo prima di spacchettare), molto spesso usando i programmi gzip o bzip2. I moderni programmi tar possono richiamare automaticamente un programma di (de)compressione, dando l'impressione che lo stesso tar gestisca anche la compressione e la decompressione.

Questo approccio ha due vantaggi:

* Segue il concetto della filosofia di Unix che ogni programma dovrebbe svolgere un compito singolo, ben fatto, in opposizione al tentativo di svolgere tutto con un solo strumento. Via via che la tecnologia di compressione progredisce, gli utenti possono usare diversi programmi di compressione senza dover modificare o abbandonare il loro archiviatore.
* Gli archivi usano la compressione solida. Diversamente da un archiviatore che comprime isolatamente ogni file, un archiviatore che combina i file prima di comprimerli può sfruttare la ridondanza su parecchi file archiviati.

La compressione solida ha in effetti alcuni svantaggi in confronto alla compressione all'interno dell'archivio:

* L'estrazione di un solo file richiede la decompressione di tutti i file che sono prima del file nell'archivio. Per un archivio di grandi dimensioni ciò può richiedere molti minuti.
* La modifica è ancora più scomoda dell'estrazione: il semplice cambiamento di un solo carattere di uno dei file archiviati richiederà tipicamente che l'intero archivio sia decompresso, aggiornato e poi ricompresso.
* È impossibile trarre vantaggio dalla ridondanza tra i file a meno che la finestra di compressione sia più grande della dimensione di un singolo file. Ad esempio, gzip usa DEFLATE, che opera tipicamente con una finestra da 32768 byte, mentre bzip2 usa una trasformata di Burrows-Wheeler grosso modo 30 volte più grande.
