Hochkomprimiertes SquashFS aus einem Ordner erstellen

English Deutsch

Problem:

Du hast einen großen komprimierbaren schreibgeschützten Ordner, der viel Festplattenplatz verbraucht. Du möchtest ihn mit SquashFS komprimieren.

Lösung

Führe einfach den folgenden Befehl aus (ersetze die Platzhalter durch die entsprechenden Dateien/Verzeichnisse):

mksquashfs_high_compression.sh
mksquashfs [source folder] [SquashFS target file] -b 1048576 -comp xz -Xdict-size 100%

Dieser Befehl komprimiert den gesamten Quellordner in die SquashFS-Zieldatei. Siehe unten für Informationen zu den Komprimierungsoptionen.

Stelle sicher, dass die SquashFS-Zieldatei vor der Verwendung dieses Befehls nicht existiert. Wenn sie bereits existiert, versucht mksquashfs sie zu aktualisieren, was jedoch zu unerwünschten Ergebnissen führen kann (ich habe das nicht überprüft, es wahrscheinlich nur viele Fehlermeldungen produziert aber eine gültige Ausgabedatei).

Du kannst die resultierende Datei mit diesem Befehl einhängen (vorausgesetzt der Zielordner existiert und ist leer):

mount_squashfs.sh
mount [SquashFS file] [folder you want to mount it in]

Wenn dieser Befehl fehlschlägt, müsstest du einige Optionen explizit angeben:

mount_squashfs_explicit.sh
mount -o loop -t squashfs [SquashFS file] [folder you want to mount it in]

Wenn du das SquashFS automatisch einhängen möchtest, kannst du auch einen /etc/fstab-Eintrag wie diesen hinzufügen:

fstab_squashfs.conf
[SquashFS file] [folder you want to mount it in] squashfs auto,defaults 0 0

XZ- vs GZip-Komprimierung

mksquashfs komprimiert standardmäßig mit gzip (Deflate), aber wenn die Komprimierungszeit nicht so wichtig ist wie die endgültige Größe, sollte man die xz (LZMA2)-Option neuerer SquashFS-Versionen verwenden.

Der obige Befehl aktiviert xz (-comp xz) mit den höchstmöglichen Komprimierungsoptionen und der höchstmöglichen Blockgröße (1 MiB statt der standardmäßigen 128 kiB). Daher ist der Prozess der Erstellung der SquashFS-Datei langsamer als bei Verwendung der Standardoptionen, aber die resultierende Datei ist viel kleiner und kann (abhängig von der Festplatten-IO-Zeit etc.) etwas schneller sein. LZMA2 ist ein stark asymmetrischer Komprimierungsalgorithmus, daher ist die Dekomprimierung viel schneller und verbraucht weniger Speicher als die Komprimierung.


Check out similar posts by category: Linux