SquashFS oder Sparse Image
USB-Sticks effizient und platzsparend zu sichern, lässt sich mühelos mit SquashFS oder Sparse Image realisieren. Ich möchte die Wege kurz beschreiben und die notwendigen Schritte darstellen.
Grundsätzlich sieht der Weg auf beiden Wegen ähnlich aus:
- Datenstrom einlesen
- Mit Nullen füllen
- Komprimieren
Übrig bleiben zwei Fragen. 1. Gehe ich den Umweg über ein Image und 2. wähle ich SquashFS oder IMG. Hier ist zu bedenken, dass SquashFS nur lesbar ins Dateisystem eingehängt werden kann.
Ich möchte erst den Weg über ein Image beschreiben, da der Web für beide Formate derselbe ist und zum Schluss, gibt es den Einzeiler, der direkt von einem Gerät einliest und die Daten verarbeitet.
dd if=/dev/some_device of=/home/backup.img mount /home/backup.img /mnt dd if=/dev/zero of=/mnt/zero_file.tmp WAIT UNTIL DISK IS FULL AND KILL DD rm /mnt/zero_file.tmp umount /mnt # FOR GZIP IMG gzip -c backup.img > backup.img.gz # FOR SQUASHFS mkdir empty-dir mksquashfs empty-dir OUTPUT.img -comp gzip -Xcompression-level 9 -xattrs -wildcards -p 'md00_squash1.img f 444 root 0 dd if=/home/backup.img bs=64K' # FULL DISK MOUNT IMG LINUX kpartx -as backup.img mount /dev/mapper unmount /dev/mapper kpartx -ds # FULL DISK MOUNT IMG FREEBSD mdconfig -a -t vnode -f backup.img -o noreadonly -u 0 mount /dev/md0 umount /dev/md0 mdconfig -d -u 0 -f backup.img
Wie man schön sehen kann, ähnelt sich der Weg stark. Der Einzeiler ist darin auch schon enthalten. In der Zeile 13 gibt man beim dd Teil einfach als Quelle das Gerät direkt an.
Über verschiedene Archivformaten und Kompressionslevel kann man die Image Größe weiter verkleinern. Einen weiteren Effekt hat die verwendete Blockgröße beim einlesen mit dd.
Irgendwo habe ich noch ein paar Links, die sich mit dem Thema auseinandersetzen. Bei Gelegenheit reiche ich die nach.