SquashFS es un sistema de archivos comprimido de sólo lectura para Linux. Se diseñó para utilizarlo en sistemas de memoria muy limitada, por ejemplo en muchos live-Cd de Linux, en el firmware de un router (y en general para sistemas embebidos), aunque también puede ser utilizado para ahorrar espacio. Veamos cómo:
Imagina que tu empresa tiene carpetas donde almacena los documentos de la última década organizados en carpetas por años. Lo más habitual es que estos archivos no vayan a ser modificados sino simplemente consultados. SquashFS nos permitiría comprimirlos, ahorrándonos espacio e incluso mejorando la velocidad de lectura.
El procedimiento a seguir consta de dos pasos: crear una imagen de disco con SquashFS para comprimir los datos y montarla en el sistema para acceder a ellos. Para lo primero tenemos el comando mksquashfs, cuxa sintaxis sería algo así: mksquashfs [directorios a comprimir] imagenDestino.sqsfs -comp [el algoritmo de compresión a usar] -b [tamaño de bloque ]. Vale, que visto así acojona pero os pongo un ejemplo práctico, donde comprimiremos las carpetas Facturas-2010, Facturas-2011 y Facturas-2012 en una imagen de SquashFS llamada HistoricoFacturas201012, usando el algoritmo de comprsión xz (que es la opción que nos da un mayor ratio de compresión) y con un tamaño de bloque de 1024kb (1 mega). Si no definís tamaño de bloque, por defecto serán 64kb:
mksquashfs facturas-2010 facturas-2011 facturas-2012 historicofacturas201012.sqsfs -comp xz -bs 1M
Con eso habremos creado una imagen de disco de sólo lectura en formato sqsfs, por lo que sólo nos queda montarlo como si fuera un disco para poder acceder a su lectura:
mount historicofacturas201012.sqsfs Facturas_10_12/
Si posteriormente quisiéramos extraer una de estas carpetas, por ejemplo para eliminar algún archivo, nos bastaría con el comando unsquashfs, usado tal que así unsquashfs [opciones] nuestraimagen.sqsfs [Directorios o archivos que extraemos]
Con nuestro ejemplo:
unsquashfs historicofacturas201012.sqsfs facturas-2010
Por defecto usará como directorio de extracción squashfs-root. Esto puede cambiarse usando la opción -d con el comando antes citado.