File sparso
# File sparso

Un file sparso (dall'inglese sparse file), in informatica, è un tipo di file per cui si cerca di occupare in maniera più efficiente lo spazio del file system nei casi in cui il file sia prevalentemente vuoto.

La maggior parte dei file system moderni può gestire i file sparsi, inclusi quelli tipici dei sistemi operativi Unix e Unix-like ed NTFS.

## Creazione

I file sparsi sono comunemente usati in caso di immagini disco, database, file di log e applicazioni scientifiche.

Ciò si ottiene evitando di scrivere sulla memoria di massa i dati che non sono ancora stati specificati, e che di fatto sono aree vuote. Al loro posto sono invece scritte delle informazioni compatte che descrivono tali aree vuote, cosa che occupa molto meno spazio nel file system. Tali aree vengono fisicamente scritte nella memoria di massa nelle loro dimensioni originali solo quando si inizia a riempirle di dati; in fase di lettura, il file system converte in maniera trasparente le aree vuote in blocchi contenenti dei byte a zero.

## Creazione di file sparsi in Unix

Si possono creare con il comando dd. Ad esempio il comando:

crea un file sparso delle dimensioni di un MiB, ma senza memorizzare dati nella memoria di massa (solo metadati).

## Riconoscere file sparsi in Unix

I file sparsi hanno dimensioni apparenti ed effettive che sono diverse tra loro. È possibile riconoscerli ad esempio confrontando la dimensione apparente come fornita dal comando ls con la dimensione effettiva come riportata dal comando du, ad esempio:

("ls -l" riporta le dimensioni apparenti in byte, mentre "du -k" riporta le dimensioni effettive in KiB, per cui occorre dividere le prime per 1024).

Oppure, tramite la versione GNU del comando du:

## Vantaggi

Il vantaggio dei file sparsi consiste nel fatto che lo spazio fisico nel file system viene allocato solo quando è effettivamente necessario: si risparmia spazio e si possono creare file di grandi dimensioni anche se lo spazio libero nel file system è insufficiente.

## Svantaggi

Tra gli svantaggi dell'uso di file sparsi:

* Essi possono diventare frammentati, in quanto lo spazio nel file system viene allocato a mano a mano che le aree vuote sono riempite, e quindi non è necessariamente contiguo.
* Le informazioni sullo spazio libero nel file system possono essere fuorvianti se si considera la dimensione apparente dei file sparsi.
* Esaurire lo spazio libero in file system che contengono file sparsi può dare effetti imprevisti.
* Copiare file sparsi tramite programmi che non li riconoscono esplicitamente risulta in una copia che occupa l'intero spazio del file sparso, incluse le aree vuote, perdendo così i benefici dei file sparsi.
