Praktisches Archiv-Filesystem: SQUASHFS

Auf Single-Layer-DVDs passen bekanntlich nur 4,7 Mrd. Bytes, was verglichen mit aktuellen Festplattengrößen nicht besonders viel ist. Wer häufig Projektdateien (oder Logdateien) in einer Form archivieren muss, die später einen leichten Zugriff erlaubt, wird zudem schnell an die Grenzen der typischen CD- und DVD-Dateisysteme stoßen:

  • ISO 9660 erlaubt nur Dateigrößen bis 2GB
  • UDF benutzt viel Platz fürs Dateisystem selbst
  • ISO 9660 mit Komprimierungserweiterungen packt nur einzelne Dateien und ist nicht standardkonform
  • komprimierte Archive müssen bei vielen Formaten komplett entpackt werden um an den Inhalt heranzukommen

Früher habe ich mich damit beholfen, komprimierte Tar-Archive direkt (!) auf CDs und später DVDs zu schreiben. Der Nachteil dieser für Datenträger mit sequentiellem Zugriff konzipierten Lösung liegt auf der Hand: Um an einzelne Dateien heranzukommen muss der gesamte Datenträger eingelesen und das gesamte Archiv entpackt werden.

Eine bessere Lösung liegt nahe: SQUASHFS kommt vor allem bei Live-Distributionen für den Container zum Einsatz, wird deshalb bei vielen Distributionen mitgeliefert. Dieses Dateisystem kann gemountet werden: So findet man schnell Einzeldateien ohne sich /tmp/ volllaufen zu lassen. Dank der Duplikatserkennung ist die Komprimierung zudem äußerst effizient. Ein SQUASHFS-Dateisystem wird wie ein ISO-Dateisystem erstellt:

mksquashfs /mein/projekt /tmp/projekt.sqfs

Gebrannt wird dieses als wäre es ein ISO9660-Dateisystem

growisofs -dvd-compat -speed=8 -Z/dev/scd0=/tmp/projekt.sqfs

So erstellte Datenträger können auf jedem Linux mit geladenem SQUASHFS-Modul gemountet werden:

mount -t squashfs /dev/scd0 /media/cdrom0

Fehlt das Kernelmodul, können Userspace-Tools zum Entpacken wie unsquashfs zum Einsatz kommen.

Nachtrag, 9. November 2007: