Ein Image erstellen geht ziemlich schnell. Zum Beispiel mit dd:
dd if=PARTITION of=DATEI
Überlegen sollte man hier, ob man nicht noch mit bs die Blockgröße festlegt, da dadurch das Erstellen unter Umständen beschleunigt werden kann. Kopiert wird solange, bis die Partition nichts mehr hergibt. Mit der option conv=noerror bewegt man dd dazu, bei einem Fehler weiter zu machen. Wobei man bei so etwas lieber auf dd_rescue zurückgreift.
Man kann auch selbst ein Leeres erzeugen
dd if=/dev/zero of=DATEI bs=BLOCKGROESSE count=ANZAHLDERBLOCKS
und dann ein Dateisystem anlegen
mke2fs -j DATEI
Ein Nachteil ist, dass das alles mehr Platz wegnimmt als nötig. Hier könnte man auf die Fähigkeit der meisten Dateisysteme zurückgreifen, eine sogenannte Sparse-Datei anzulegen. Diese Datei nimmt dann nur soviel Platz in Anspruch, wie auch wirklich belegt ist.
dd if=/dev/zero of=sparsefile count=0 bs=1G seek=1
Hier wird eine 1GB-Datei angelegt, die zwar mit dieser Größe auch angezeigt wird, allerdings auf der Platte nur ein paar Bytes belegt.
Der Nachteil einer Sparse-Datei ist, dass diese ziemlich Fragmentieren kann und das diese unter Umständen die Datensicherung durcheinander bringt, falls die Datensicherung nicht in der Lage ist, mit Sparse-Dateien umzugehen. Bei Tar, Rsync und anderen gibt es dafür übrigens extra eine Option, damit diese damit umgehen können.
Diese Dateien kann man natürlich auch praktischerweise ganz normal ins System einhängen
mount -o loop DATEI VERZEICHNIS
und damit dann normal arbeiten.
Wenn man so ein Image komprimieren will - am Besten mit bzip2 oder rzip - komprimiert man unter Umständen unbenutzte Daten im Dateisystem mit. Diese sollte man am Besten ausnullen. Datei also wieder einhängen, ins Verzeichnis wechseln und eine große Datei mit Nullen erzeugen
mount -o DATEI VERZEICHNIS
cd VERZEICHNIS
dd if=/dev/zero of=NULLDATEI
Sobald das Image voll ist, meckert das System. Dann einfach
rm NULLDATEI
cd ..
umount VERZEICHNIS
machen und die Datei komprimieren.
Aber vielleicht will man auch nur, dass das Image nach dem Ausnullen weniger Platz wegnimmt im Dateisystem. Leider kenne ich nur die Möglichkeit, die Datei umzukopieren und beim Kopieren zu sagen, die Null-Bereiche wieder als Sparse zu behandeln
cp --sparse=always DATEI DATEINEU
rm DATEI
mv DATEINEU DATEI
Eine Möglichkeit bei einer Datei nachträglich Nullen in Sparse-Bereiche umwandeln zu lassen, wäre natürlich praktischer.