Baremetal Backup – 2016

Da ich wieder einmal ein Image einer Festplatte erstellt hatte, ist mir aufgefallen dass die meisten Anleitungen hierfür viele coole und nützliche Funktionen außer Acht lassen, daher werde ich hier mal auf einige Schritte eingehen.

Erstellen

Beim erstellen des Backups kann man einige Dinge beachten, welche das erstellen beschleunigen, die Speichergröße reduzieren oder den Prozess bequemer machen.

Freien Speicher nullen

Freie Speicherbereiche auf Festplatten sind meist noch mit Alten Daten von bereits gelöschten Dateien gefüllt. Dies ist im Normalen betrieb vollkommen egal, wenn man aber sich ein Image einer Festplatte erstellen möchte ist es praktisch wenn diese Bereiche mit Nullen überschrieben werden, da sich dann das Image besser komprimieren lässt.
Viele Personen schlagen vor eine große Datei mittels dd anzulegen:

dd if=/dev/zero of=/bigfile.tmp

Viel einfacher geht’s es hingegen mit Tools die Speziell dafür gedacht sind. Bei ext* Dateisystemen zerofree und bei ntfs ntfswipe.

Beide haben den Vorteil dass sie nur die benutzen Blöcke überschreiben, Schneller sind und z.b. im Falle von ntfswipe auch die Auslagerungsdatei überschreiben.

Für eine Swap Partition unter Linux muss man hingegen weiterhin dd benutzen.

Fortschrittsanzeige bei dd

Zum Image erstellen wird meistens dd verwendet. Da dd direkt keine Statusanzeige anzeigt kann man sich den Fortschritt mittels

pkill -USR1 dd

anzeigen lassen, oder man piped die Ausgabe durch pv

dd if=/dev/sdb | pv | dd of=/opt/backup.img

geleitet. Beides zeigt den Status an.

Viel einfacher geht es mit dem dd eingebauten status=progress welches seit der Coreutils Version 8.24 verfügbar ist

dd if=/dev/sdb  of=/opt/backup.img status=progress

Kompression beim erstellen

Da es viel Performanter ist das Image gleich bei Erstellung zu komprimieren, wird oft

dd if=/dev/sdb | gzip > /opt/backup.img

vorgeschlagen. Deutlich schneller geht dies mit pigz, einer Multicore Variante von gzip, da diese alle CPU Kerne benutzt.

Zwar gibt es einige Kompressionsverfahren welche schneller und besser komprimieren, da aber gzip  überall verfügbar ist würde ich hier dazu raten lieber auf ein paar GB zu verzichten als im Notfall erst das richtige Dekompressions Tool zu suchen.

Zugriff

Es kommt oft vor dass man nicht gleich die ganze Festplatte wiederherstellen möchte, sondern nur kurz zugreifen um etwas nachzuschauen/einige Dateien zu kopieren.

Hier gibt es einige Tricks dazu.

Image als Loopback mounten

Häufig wird empfohlen das Image mit fdisk zu öffnen, nachzuschauen an welcher stelle die PArtition ist und dann mittels losetup den offset anzugeben um die partition zu mounten. Dies ist unbequem und sehr fehleranfällig.

Viel einfach geht es mittels:

losetup --partscan --find --show /opt/backup.img

Hier sucht sich losetup selber die entsprechenden Partitionen und mounted sie als /dev/loopXpY.

Dies funktioniert seit Util-linux Version 2.21

Komprimierte Images mounten

Um das image nicht zu entpacken gibt es avfs, ein dateisystem welches, unter anderem, komprimierte Dateien als unkomprimiert darstellt.

Man muss es sich zwar selber compilen, aber wenn man häufig mit komprimierten images arbeitet ist es ein sehr nützliches Tool.

Wiederherstellung

Beim wiederherstellen des images gibt es im Prinzip wenig zu beachten:

pigz -c /opt/backup.img.gz | dd of=/dev/sdb status=progress

Wenn man ein image mit GPT Partitionsschema auf eine Festplatte die größer als die Originale ist, wiederherstellt sollte man beachten dass man die GPT Partitionstabelle nochmal schreibt, da mit diese an den richtigen stellen auf der Festplatte sitzt.

Dazu einfach die Festplatte mittels gdisk öffnen und mit (w) die Tabelle erneut schreiben.

Zuletzt

im Grunde genommen kann man den Artikel auf folgende 3 Zeilen zusammen fassen:

ntfswipe -af /dev/sdbX
zerofree /dev/sdbX
dd if=/dev/sdb status=progress | pigz > /opt/backup.img.gz

Was man außerdem Beachten sollte sind Dinge wie die Wiederherstellung des UEFI Bootloaders, welche unter Umständen recht kompliziert sein kann.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.