Backup
Bevor man seinen Rechner neu aufsetzt, ist es immer sinnvoll, den aktuellen Stand zu sichern. Dafür gibt es keine Ausrede, denn Speicherplatz in Form von USB-Festplatten ist spottbillig – aktuell nur noch knapp 20€ pro Terabyte.
Unter unixoiden Betriebssystemen ist das Sichern des kompletten Festplatteninhaltes recht einfach:
dd status=progress if=/dev/nvme0n1 of=/media//Backup/backup.img
Also: Kopiere den Inhalt der ersten SSD (inklusive aller dort befindlichen Partitionen) auf die unter /media/… eingehängte Backup-Festplatte. Das dauert je nach Festplattengröße und USB-Typ einige Minuten oder Stunden. Natürlich kann man als Ziel auch ein gemountetes Netzlaufwerk benutzen, auf dem entsprechend Platz ist, dann dauert es aber vermutlich nochmal etwas länger.
Restore
Danach kann man den Rechner neu aufsetzen, neu einrichten, die anderweitig per File-Backup gesicherten Dateien wieder einspielen. Und wie immer kommt dann der Punkt, wo einem einfällt – ‘Verdammt, die Datei XYZ, die hatte ich nicht gesichert, aber die brauche ich wieder!”
An der Stelle kommt das vorher gezogene Image zum Einsatz. Also: Backupplatte wieder anschließen und die entsprechende Partition aus dem Image wieder mounten. Dazu benötigt man zuerst die Aufteilung der Partitionen auf dem Image, in anderen Worten: Welche Partition beginnt wo? Dazu kann man parted verwenden:
parted /media//Backup/backup.img (parted) unit Einheit? [compact]? B (parted) print
parted wird im interaktiven Modus bedient. Zuerst schalten wir mittels unit und der Angabe B in den Byte-Modus. parted soll die Partitionsgrenzen als Bytes anzeigen, denn wir benötigen exakte Angaben um diese Partition dann später einzubinden. Mittels print kann man nun die Partitionsliste ausgeben. Bei mir sah das so aus:
Nummer Anfang Ende Größe Dateisystem Name Flags 1 1048576B 525336575B 524288000B fat32 EFI system partition boot, esp 2 525336576B 659554303B 134217728B Microsoft reserved partition msftres 3 659554304B 363553882111B 362894327808B ext4 Home 4 363553882112B 478152753151B 114598871040B Encrypted 5 478152753152B 495193161727B 17040408576B ext4 Root 6 495193161728B 512109838335B 16916676608B linux-swap(v1) Swap
Wichtig sind die Angaben unter “Anfang”, am besten kopiert man sich die Tabelle zur Referenz in den Texteditor. parted kann man nun wieder mit quit verlassen.
Restore aus unverschlüsselter Partition
War die Partition unverschlüsselt, kann man sie direkt mounten:
sudo su cd /media//Backup mkdir /mnt/home mount -o loop,ro,offset=659554304 backup.img /mnt/home
Wichtig: Das B am Ende der Größenangabe entfernen.
Damit ist die Partition anschließend als /mnt/home/ verfügbar. Ggf. möchte man anschließend noch mit chmod/chown dafür sorgen, dass man nicht nur als Root an die Dateien kommt.
Das war die leichte Übung. Aber was, wenn man Dateien aus einer verschlüsselten Partition benötigt?
Restore aus LUKS-verschlüsselter Partition
Ist die Partition verschlüsselt, dann benötigt man noch ein paar Zwischenschritte. Da ich dazu meine Infos aus mehreren Quellen zusammensuchen musste und einige Zeit rumprobiert habe gibt es jetzt diesen Blogpost. Eigentlich ist es ganz einfach, wenn man weiss, wie es geht. Deshalb folgt nun das “Restore aus einer verschlüsselten Partition in drei einfachen Schritten“.
Schritt 1: Loop-Device anlegen
Wir benötigen zuerst einmal Zugriff auf die Datei über ein Loop Device. Hier passiert nichts Spannendes, es wird nur ein Blockdevice simuliert, das Zugriffe auf das Device in die Image-Datei umlenkt. Loop Devices werden einfach durchnummeriert, also sehen wir erst mal nach, was noch frei ist:
ls /dev | grep loop
Es werden nun alle vorhandenen Loop Devices aufgelistet, wir verwenden einfach eine noch nicht vorhandene Nummer. In guter Hackertradition verwende ich als Beispiel die Nummer 23. Als Offset wird der Anfang der verschlüsselten Partition verwendet.
losetup -o 363553882112 /dev/loop23 backup.img
Schritt 2: Partition öffnen
Nun kann ich mit cryptsetup auf die Partition zugreifen und sie öffnen:
cryptsetup open --type luks /dev/loop23 enc
Enc ist hierbei ein frei gewählters Alias. Unter diesem wird die entschlüsselte Partition anschließend verfügbar sein.
cryptsetup fragt nun nach dem Passwort für die Partition:
Geben Sie die Passphrase für »/dev/loop23« ein: *******************
Das Öffnen der Partition benötigt ein paar Sekunden. Bevor ich nun die Daten auslesen kann, muss ich die Partition noch einhängen.
Schritt 3: Entschlüsselte Partition einhängen
mount /dev/mapper/enc /mnt/my-precious-files
Das Öffnen hat nun ein neues Block Device unter /dev/mapper mit dem oben gewählten Alias angelegt. Nach dem Mounten kann ich die Dateien unter /mnt/my-precious-files finden und meine verloren gegangene Datei wiederherstellen.