Systemrestore mit restic

Vor kurzem hat mich mein kleiner Computer „im Stich“ gelassen. Ganz nach dem Motto kein Bild kein Ton, … Da wohl etwas mehr als nur der Arbeitsspeicher defekt ist, habe ich die debian Installation auf einem neuem System wiederhergestellt. Glücklicherweise hatte ich eine Woche zuvor ein Backup mittels restic erstellt. (Wie das geht zeuge ich euch in diesem Blog Beitrag)

Hier werden zwar „nur“ Dateien und Ordner gesichert, wie man daraus wieder ein Lauffähiges System herstellt, zeige ich euch hier. Erst einmal benötigt man einen Ziel Computer, auf dem das Backup wiederhergestellt wird. Das kann herkömmliches „Blech“, aber auch eine virtuelle Maschine sein.

 

„Rettungssystem“ booten

Zur Wiederherstellung und Rettung habe ich debian live gestartet. Ein ISO Image kann hier (https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/) heruntergeladen werden. Dieses wird wahlweise auf eine DVD gebrannt oder mittels cp auf einen USB-Stick kopiert.

cp ~/Downloads/debian-9.4.0-amd64-DVD-1.iso /dev/sdb

Anschließend starten wir unser System davon.

Partitionierung

Da auf dem neuem System die Festplatte noch leer ist, muss diese zuerst Partitioniert werden. Dies kann ebenfalls in der live Umgebung mittels GParted erledigt werden, oder mit der gparted live CD.

In diesem Fall habe ich 3 Partitionen erstellt. Die erste /dev/sda1 ist die Boot (/boot) Partition mit 2GB und ext4 als Dateisystem. Die zweite Partition (/dev/sda2) wird unter „/“ eingehängt und ist btrfs formatiert. Die dritte Partition ist ebenfalls btrfs formatiert und wird unter „/home“ eingehängt.

root@srv-nuc:~# fdisk -l
Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x807ceb57

Device     Boot     Start       End   Sectors Size Id Type
/dev/sda1            2048   4196351   4194304   2G 83 Linux
/dev/sda2         4196352 130025471 125829120  60G 83 Linux
/dev/sda3       130025472 167772159  37746688  18G 83 Linux

Restore

Um nun die Dateien wiederherstellen zu können, hängen wir die Partitionen in neuen Ordner unter /mnt/ ein.

root@live:~# cd /mnt/
root@live:/mnt# mkdir restic
root@live:/mnt# mkdir boot
root@live:/mnt# mkdir home
root@live:/mnt# mkdir root
root@live:/mnt# mount /dev/sda1 /mnt/boot/
root@live:/mnt# mount /dev/sda2 /mnt/root/
root@live:/mnt# mount /dev/sda3 /mnt/home/

Dann erfolgt der eigentliche Restore. Das Backup Repository liegt auf einem NFS-Export, welches wir unter /mnt/restic mounten. Um nicht jedes mal das Repository Passwort eingeben zu müssen, exportieren wir dieses vorher als Variable.

root@live:/mnt# mount.nfs 192.168.123.225:/mnt/wdred/backup/restic /mnt/restic
root@live:/mnt# export RESTIC_PASSWORD=strenggeheim
root@live:/mnt# restic -r /mnt/restic restore latest --target '/mnt/' --path '/boot/'
root@live:/mnt# restic -r /mnt/restic restore latest --target '/mnt/root/' --path '/'
root@live:/mnt# restic -r /mnt/restic restore latest --target '/mnt/' --path '/home/'

Somit sind die eigentlichen Daten wiederhergestellt. Um das System bootfähig zu machen, müssen wir noch den Bootloader grub installieren / aktualisieren.

Bootloader

Wir werden jetzt die „alte“ Linux Umgebung mittels chroot simulieren, und kümmern uns um den Bootloader grub.

root@live:/mnt# umount /mnt/boot
root@live:/mnt# umount /mnt/home

root@live:/mnt# mkdir /mnt/root/proc
root@live:/mnt# mkdir /mnt/root/sys
root@live:/mnt# mkdir /mnt/root/dev

root@live:/mnt# mount -t proc /proc /mnt/root/proc/
root@live:/mnt# mount -o bind /sys /mnt/root/sys/
root@live:/mnt# mount -o bind /dev /mnt/root/dev/

root@live:/mnt# chroot /mnt/root/

# Ab jetzt befinden wir uns in der chroot Umgebung
root@chroot:/# mount /dev/sda1 /boot/
root@chroot:/# mount /dev/sda3 /home/

# Bootloader installieren
root@chroot:/# grub-install /dev/sda

# /boot/grub/grub.cfg aktualisieren, mit neuen UUIDs
root@chroot:/# update-grub

root@chroot:/# umount /boot /home
root@chroot:/# exit
# Wir haben die chroot Umgebung verlassen

root@live:/mnt# umount /mnt/root/proc/ /mnt/root/sys/ /mnt/root/dev/

fstab

Zu Abschluss müssen die UUIDs in der /etc/fstab angepasst werden. Die neuen UUIDs erhalten wir mittels „blkid“

root@live:/mnt# vim /mnt/root/etc/fstab
root@live:/mnt# umount /mnt/root/

Falls der Ruhezustand (hibernation) aktiviert ist, muss ggf. noch die UUID der SWAP Partition in „/etc/initramfs-tools/conf.d/resume“ eingetragen werden. Die Einstellung wird mit folgendem Befehl in das initramfs eingetragen. (innerhalb der chroot Umgebung oder nach dem ersten booten)

update-initramfs -u

Das war’s, jetzt können wir das Live System herunterfahren, und das frisch Wiederhergestellte System booten.

Wir verwenden Cookies um unseren Besuchern eine optimale Erfahrung bieten zu können.
Weitere Details finden Sie in unserer Datenschutzerklärung. OK, bitte nicht mehr anzeigen.