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.
- Sourceforge-Projektseite von SQUASHFS
- Noch kompakter, aber in keinem Distributionskernel: SQUASHFS mit LZMA-Patch
Nachtrag, 9. November 2007:
- SquashFS soll in den Linux-Kernel, neue Version erhältlich (News bei Golem.de)