Wenn die Kamera die SD-Karte mit den Urlaubsfotos frisst oder man versehentlich die Korrespondenz mit dem Finanzamt gelöscht hat, dann schlägt die Stunde des Datenretters Magic Rescue.
Nachdem die Urlaubsfotos eine Woche lang immer brav auf der SD-Karte landeten, war die teure Fotokamera kurz vor der Abreise doch plötzlich der Meinung, dass ein leerer Datenträger wesentlich hübscher sei. Den dadurch erlittenen Verlust kann in vielen Fällen Magic Rescue rückgängig machen. Das kleine Werkzeug hilft immer dann, wenn das Betriebssystem einen Datenträger nicht einbinden möchte, nach dem vorschnellen Abziehen eines USB-Sticks Inkonsistenzen auftreten oder aber Dateien (versehentlich) gelöscht wurden.
Zauberhafte Nummern
In allen diesen Fällen befinden sich die Inhalte der Dateien noch auf dem Datenträger. Um sie aufzuspüren, greift Magic Rescue zu einem kleinen Trick: Die meisten Dateiformate nutzen einen ganz charakteristischen Aufbau. JPEG-Dateien starten zum Beispiel immer mit der Bytefolge FF D8, PDF-Dokumente mit der Zeichenfolge %PDF.
Diese charakteristischen Bytes bezeichnet man auch als Magic Numbers – daher auch der Name Magic Rescue. Das Werkzeug liest den betroffenen Datenträger einfach von vorne bis hinten ein und hält dabei nach den bekannten Mustern Ausschau. Sobald es über ein solches stolpert, bittet es ein passendes anderes Programm, die gefundenen Daten in einer neuen Datei zu sichern. Durch seine Arbeitsweise kommt das Werkzeug mit beliebigen Dateisystemen zurecht, auch eine defekte Partitionstabelle macht ihm nichts aus. Obendrein kann das Programm die Dateiendungen ignorieren und so beispielsweise auch JPEG-Fotos finden, die mit der Endung .xyz gespeichert wurden.
Das Vorgehen hat aber auch einen gravierenden Nachteil: Magic Rescue kann nur solche Dateien retten, deren Dateiformate es kennt. Die umfassen allerdings eine recht breite Palette, angefangen bei AVI-Videos bis hin zu ZIP-Archiven. Auf stark fragmentierten Dateisystemen stößt Magic Rescue zudem an seine Grenzen: Dort erlaubt das Programm in der Regel nur, den ersten Block einer Datei wiederherzustellen. Je nach Dateisystem umfassen diese Blöcke aber immerhin bis zu 50 MByte.
Gut gekocht
Den Aufbau eines bestimmten Dateiformats entnimmt Magic Rescue einem sogenannten Rezept. Beispielsweise gibt es ein Rezept, das den Aufbau von JPEG-Dateien beschreibt, während sich ein anderes um PDF-Dateien kümmert. Netterweise bringt Magic Rescue bereits einige Rezepte für weitverbreitete Dateiformate mit. Das Rettungswerkzeug liegt zudem in den Repositories fast aller Distributionen und lässt sich somit bequem über die Software-Verwaltung einspielen. Unter Ubuntu und Linux Mint genügt etwa der Befehl sudo apt install magicrescue zur Installation. Darüber hinaus gehört das Werkzeug bei vielen Live-Systemen und Rettungsdistributionen zur Standardausstattung.
Um mit Magic Rescue die gelöschten Urlaubsfotos wiederherzustellen, schließen Sie zunächst den fraglichen Datenträger an den PC an. Stellen Sie dann sicher, dass Ihr System möglichst schnell auf den Datenträger zugreifen kann. Sofern die Fotos auf einer SD-Karte lagern, sollte das Lesegerät beispielsweise über einen USB-3.1-Anschluss angebunden sein. Da Magic Rescue einmal den kompletten Datenträger einliest, dauert der Vorgang sonst deutlich länger. In den folgenden Beispielen gehen wir davon aus, dass das System die SD-Karte als /dev/sdc5 anspricht.
Als Nächstes benötigen Sie einen weiteren Datenträger, der genügend freien Speicherplatz für die geretteten Daten bereithält. Da Magic Rescue unter Umständen auch Duplikate findet, sollten Sie die Speicherkapazität großzügig bemessen. Sofern die interne Festplatte des Rechners genügend freien Speicher bietet, können Sie auch einfach im Heimatverzeichnis mit einem Dateimanager oder dem Kommando mkdir ~/rettung ein Verzeichnis für die gefundenen Daten einrichten.
Sicherheitshalber auslesen
Damit das Linux-System während der Rettungsaktion nicht versehentlich im Hintergrund auf den defekten oder gelöschten Datenträger zugreift und dort das Drama verschlimmert, empfiehlt es sich, mit dem Kommandozeilenwerkzeug Ddrescue [2] ein Abbild des fraglichen Datenträgers zu erstellen und Magic Rescue sowie gegebenenfalls weitere Tools dann nur darauf anzusetzen. Die meisten Distributionen führen Ddrescue in den Paketquellen; unter Ubuntu installieren Sie das Paket gddrescue.
Schließen Sie danach den defekten Datenträger an, hängen Sie ihn jedoch nicht ein. Ermitteln Sie dann mithilfe des Kommandos lsblk, welchen Gerätenamen er besitzt – in unserem Beispiel heißt er /dev/sdc. Diesen Gerätenamen übergeben Sie Ddrescue und verraten dem Tool zusätzlich noch, in welcher Datei es den kompletten Inhalt des Datenträgers sichern soll (Listing 1, erste Zeile). Die Datei backup.img wird dabei genauso groß wie der zu rettende Datenträger. Sie sollten sie folglich auf einer Partition mit ausreichend freiem Speicherplatz ablegen. Magic Rescue lassen Sie dann einfach diese Datei untersuchen (zweite Zeile).
Listing 1
$ ddrescue /dev/sdc backup.img $ magicrescue -r jpeg-jfif -d ~/output backup.img
Speisekarte
Als Nächstes müssen Sie sich ein Rezept aussuchen, das Magic Rescue bei der Suche verwenden soll. Dazu werfen Sie einen Blick in das Verzeichnis /usr/share/magicrescue/recipes/. Einige Distributionen verstecken die Rezepte auch unter /usr/local/share/magicrescue/recipes/. Suchen Sie sich dort ein oder mehrere passende Rezepte aus.
Im unserem Beispiel soll Magic Rescue alle JPEG-Fotos von der SD-Karte wiederherstellen. Die zum JPEG-Format passenden Rezepte heißen jpeg-jfif und jpeg-exif. Im Zweifelsfall öffnen Sie das Rezept mit einem Texteditor: Am Anfang der Datei finden Sie eine ausführliche Beschreibung des Rezepts (Abbildung 1).

Abbildung 1: Bei dem Magic-Rescue-Rezepten handelt es sich um einfache Textdateien. Die mitgelieferten Exemplare verweisen am Anfang auf ihren Zweck.
Damit sind endlich alle Informationen beisammen, die Sie Magic Rescue an der Kommandozeile übergeben (Listing 2, erste Zeile). Auf den Schalter -r, den Sie mehrmals angeben dürfen, folgt jeweils der Name eines Rezepts. Das Programm unterstützt so das parallele Abarbeiten mehrerer Rezepte. Hinter dem Schalter -d folgt das Verzeichnis, in dem Magic Rescue die geretteten Daten ablegen soll. Ganz zum Schluss geben Sie den Gerätenamen des zu untersuchenden Datenträgers an.
Die Suche nach wiederherstellbaren Dateien benötigt je nach Datenträger einige Zeit. Das gilt insbesondere für mehrere Terabyte große Festplatten: Dort arbeitet Magic Rescue durchaus mehrere Stunden an der Datenrettung. Der Vorgang lässt sich allerdings jederzeit mit [Strg]+[C] unterbrechen. Möchten Sie den Scan später an derselben Stellen wieder fortsetzen, müssen Sie sich die Adresse merken, bis zu der das Programm gekommen ist. Sie steht hinter dem letzten Found ... at. Später starten Sie das Werkzeug mit demselben Befehl wie zuvor, hängen aber noch über den Parameter -O die entsprechende Adresse an (Listing 2, Zeile 2).
Listing 2
$ magicrescue -r jpeg-jfif -r jpeg-exif -d ~/rettung /dev/sdc5 $ magicrescue -O 0x17F8000 -r jpeg-jfif -r jpeg-exif -d ~/rettung /dev/sdc5 $ magicsort ~/rettung $ dupemap delete,report ~/rettung
Suche im Heuhaufen
Während des Wiederherstellens zeigt Magic Rescue die gefundenen Dateien an (Abbildung 2). Erscheint dabei eine Meldung wie Command not found, fehlen für die Wiederherstellung notwendige Hilfsprogramme.

Abbildung 2: Nicht immer vermag Magic Rescue Dateien zu retten: Hier ließ sich gleich das erste gefundene JPEG-Foto nicht wiederherstellen.
Brechen Sie in diesem Fall den Vorgang über [Strg]+[C] ab, und öffnen Sie die verwendeten Rezepte mit einem Texteditor. Ganz am Anfang der Rezepte finden Sie eine Zeile, die mit # Depends on beginnt. Dahinter stehen alle Hilfsprogramme, die das Rezept zur Wiederherstellung benötigt. Stellen Sie sicher, dass alle diese Anwendungen installiert sind, und starten Sie dann Magic Rescue erneut.
Nach Abschluss des Scan-Vorgangs müssen Sie wohl oder übel den Zielordner ~/rettung von Hand durchsuchen und die dort von Magic Rescue abgelegten Dateien sortieren (Abbidlung 3). Dabei stolpern Sie mit Sicherheit über Daten, die Sie längst vergessen oder bewusst gelöscht haben. Häufig tauchen auch Files auf, die der Webbrowser im Hintergrund prophylaktisch heruntergeladen hat.

Abbildung 3: Magic Rescue gibt allen gefundenen Dateien kryptische Namen, die auf ihren Fundort auf dem Datenträger hinweisen.
Etwas Ordnung verschafft das zu Magic Rescue gehörende Werkzeug Magicsort, das die geretteten Dateien anhand ihrer Dateitypen sortiert. Das kommt besonders dann gelegen, wenn Sie Magic Rescue auf mehrere verschiedene Dateitypen angesetzt haben. Beim Aufruf teilen Sie Magicsort einfach den entsprechenden Ordner mit (Listing 2, Zeile 3). Beim Aussortieren hilft zudem das Tool dupemap, das alle Duplikate löscht (Zeile 4).
Handgemacht
Da es sich bei den Rezepten um simple Textdateien handelt, lässt sich die Sammlung recht leicht um eigene Rezepte erweitern. Ein Beispiel für ein einfaches Rezept zeigt Listing 3. Es rettet alle GIF-Bilder, die dem Standard GIF98a folgen. Alle Zeilen, die mit einem Hash-Symbol # beginnen, ignoriert Magic Rescue später. Die zweite Zeile des Rezepts verrät Magic Rescue, nach welcher Zeichenfolge es auf der Festplatte Ausschau halten soll.
Listing 3
# Rettet GIF-Bilder 0 string GIF89a extension gif command dd of="$1" bs=1024k count=2
GIF-Bilder verraten sich durch die Zeichenkette GIF89a, also einen string. Dessen Position innerhalb der Datei, den sogenannten Offset, verrät die Zahl am Zeilenanfang. Im Beispiel steht der String ganz am Anfang eines GIF-Bilds und somit 0 Positionen vom Anfang entfernt.
Sobald Magic Rescue die Zeichenkette gefunden hat, ruft es den Kommandozeilenbefehl hinter command auf. Listing 3 sichert einfach stupide die auf der Festplatte folgenden 2 MByte. Die ausgelesenen Daten landen in einer Datei, deren Dateiendung Sie hinter extension angeben. Ein richtiges Rezept sollte hier zwar etwas intelligenter vorgehen, die meisten Bildbetrachter und Bearbeitungsprogramme kommen jedoch mit derart gesicherten Dateien zurecht.
Das fertige Rezept speichern Sie im Heimatverzeichnis unter einem möglichst eindeutigen Namen – im Beispiel wäre gif98a recht passend. Damit Magic Rescue das Rezept nutzt, verraten Sie dem Tool einfach über den Parameter -r den entsprechenden Speicherort (Listing 4).
Weitere Informationen zum Aufbau der Rezepte hält die Manpage von Magic Rescue bereit. Als Grundlage für eigene Rezepte eignen sich auch die mitgelieferten Standardrezepte. Eine Liste mit möglichen Magic Numbers hält unter anderem die englischsprachige Wikipedia bereit [1].
Listing 4
$ magicrescue -r ~/gif98a -d ~/rettung /dev/sdc5
Fazit
Magic Rescue hilft sowohl gelöschte Dateien zurückzuholen als auch Daten von defekten Datenträgern oder Partitionen zu retten. Wie gut das funktioniert, hängt jedoch maßgeblich von den vorhandenen Rezepten ab. Die lassen sich immerhin schnell an die eigenen Anforderungen anpassen beziehungsweise um benötigte Exemplare ergänzen. Letzteres setzt allerdings das notwendige Wissen um den Aufbau der Dateiformate voraus. Magic Rescue ist also kein universelles Rettungswerkzeug und ersetzt keinesfalls regelmäßige Backups. Im Fall der Fälle erweist es sich jedoch als äußerst flexibler Helfer.
Infos
-
Magic Numbers: https://en.wikipedia.org/wiki/List_of_file_signatures
-
Ddrescue: Harald Zisler, Christoph Langner, “Blaulichteinsatz”, LU 11/2015, S. 34, http://www.linux-community.de/35783





