# XAR (formato di file)

XAR (eXtensible ARchive format) è un nuovo formato di archiviazione di nuova concezione che offre numerosi vantaggi rispetto agli odierni (al febbraio 2006) formati come la facile estrazione di dati arbitrari, metadati all'inizio del file, e naturalmente estensibilità.
XAR è fondamentalmente un formato di file che può contenere altri file.

## Costituzione

Il formato di cui XAR si costituisce consiste in un piccolo header binario, un documento XML, e il normale contenuto/i del file stesso detto heap, nell'ordine di citazione..
* L'header binario contiene informazioni circa il documento XML, tipo se il file è compresso, qual è il suo hash, quale algoritmo di hash è stato usato, etc.
* Il documento XML, a cui ci si riferisce spesso con la metafora di una tabella dei contenuti, è la parte importante poiché contiene tutte le informazioni sui file contenuti nell'archivio. L'uso dell'XML permette al formato di essere molto estensibile e di poter essere gestito dagli strumenti software già esistenti tramite piccole modifiche degli stessi.
* L'heap (il "mucchio" in inglese) contiene file compressi singolarmente e altri dati (come attributi, resource forks, etc.) che si susseguono linearmente. L'offset, la lunghezza e il tipo di compressione usati per immagazzinare il singolo file nell'heap sono contenuti nell'header del file XML.

## Metadati

L'header XML permette a XAR di contenere metadati arbitrari dei file contenuti dentro all'archivio. Oltre ai metadati standard presenti in file UNIX come la dimensione del file e le date di creazione e modifica, XAR può immagazzinare informazioni come il bit di un file ext2fs o HFS, i flag unix, riferimenti ad estensioni di attributi, resource fork e gli hash dei file.
In aggiunta alle informazioni relative al file, è possibile inserire in uno XAR anche informazioni esterne richieste frequentemente dall'utilizzatore dell'archivio.
Il software che gestisce gli archivi XAR può immagazzinare nell'header del file XML informazioni aggiuntive circa il contenuto del file. Per esempio si potrebbe immagazzinare un interprete di script immediatamente dentro al singolo file dello script, delle librerie, oppure tag MP3 o informazioni EXIF in un file JPEG. L'utente dell'archivio ha facile e veloce accesso all'header del file XML e non è necessario espandere l'intero archivio per ottenere i metadati dei file archiviati.
Tutto ciò rende XAR una piattaforma conveniente su cui costruire strumenti come un formato di packing.
Esiste l'estensione XIP, per l'archivio XAR che può essere firmato digitalmente per verificarne l'integrità.

## Compressione multipla

I file contenuti in uno XAR sono compressi singolarmente. Questo permette un'estrazione veloce di file individuali e non richiede l'uso di spazio extra su disco e dell'uso della CPU necessario per estrarre l'intero archivio, come richiede invece ad esempio un archivio TAR. Questo rende lo XAR utile per un veloce ripristino di file cancellati o sovrascritti accidentalmente da un archivio di backup. Questo significa anche che XAR può usare differenti metodi di compressione per ogni file dell'archivio. Per esempio potrebbe non essere una buona idea cercare di comprimere un file già compresso, ma un file di grandi dimensioni potrebbe beneficiare enormemente di una compressione bzip2, mentre per un piccolo file di testo converrebbe usare meglio la compressione gzip.

## Altri formati

XAR (Excel AutoRecovery) può anche essere l'estensione di file di AutoRecovery di Excel 2007. In questo caso il nome del file ha la forma tipica dei nomi autogenerati dalle applicazioni Office, es.: ~ar127.xar.