Die CLI-Tools Testdisk und Photorec gelten als die Top-Werkzeuge zur Datenrettung unter Linux. Für Photorec gibt es seit Neuestem sogar eine grafische Oberfläche.
Beim Hantieren mit Dateien und Verzeichnissen passieren leicht Missgeschicke. Gerade auf der Kommandozeile ist schnell eine wichtige Datei oder gar ein kompletter Ordner gelöscht. Auch das versehentliche Formatieren einer Partition stellt keinen Einzelfall dar und schickt dann Teile der Musiksammlung oder liebgewonnene Fotos ins Nirwana. Noch schlimmer: Die Festplatte weist mit seltsamen Laufgeräuschen laut und vernehmlich auf ihr baldiges Ableben hin.
Der wichtigste Ratschlag zu diesem Zeitpunkt lautet: Verfallen Sie nicht in blinden Aktionismus. Bewahren Sie die Ruhe, dann bestehen gute Chancen, die vermeintlich verlorenen Daten ganz oder zumindest teilweise wiederherstellen zu können. Am besten starten Sie gleich ein Live-Image einer beliebigen Distribution, um die Datenrettung von dort aus einzuleiten.
Auf jeden Fall müssen Sie vermeiden, auf den Datenträger zu schreiben; damit könnten Sie die gefährdeten Daten unwiederbringlich vernichten. Ist das Missgeschick auf der Systemplatte passiert und das Home liegt auf derselben Partition, sollten Sie zudem den PC sofort vom Strom trennen: Linux schreibt ständig auf die Systemplatte, insbesondere bei einem geregelten Herunterfahren zum Leeren der Puffer.
Nur versteckt
Vermeintlich gelöschte Daten lassen sich überhaupt nur deshalb wiederherstellen, weil ein Löschvorgang sie keineswegs umgehend vom Massenspeicher entfernt. Das System löscht vielmehr lediglich den Verweis auf den Speicherort der Daten aus dem Dateisystem, beim Linux-Standard-FS Ext4 etwa aus der Inode-Tabelle. Das gibt den zugehörigen Speicherplatz zum Überschreiben frei. Solange das System aber die betreffenden Sektoren des Massenspeichers nicht mit neuen Daten beschickt, bleiben die darin abgelegten erhalten.
Bei der herkömmlichen Festplatte liegen die Daten auf magnetisierten rotierenden Scheiben, bei SSDs und bei anderen Flash-Medien in Speicherzellen auf einem Halbleiter. Von beiden Datenträgertypen lassen sich gelöschte Dateien retten. Bei HDDs gelingt das wesentlich einfacher als bei SSDs, da hier die Hersteller verschiedene Controller einsetzen, deren Logik die Daten unterschiedlich ablegt. Wurde zudem noch der TRIM-Befehl [1] abgesetzt, laufen jegliche Rettungsversuche ins Leere.
Die Retter in der Not
Wer das Erstellen von Backups vernachlässigt hat, muss in solchen Situationen darauf hoffen, mit einer Software zur Datenrettung das Geschehene rückgängig machen zu können. Unter Linux ist hier seit vielen Jahren das mittlerweile in den Distributionen in Version 7.0.x vorliegende Testdisk [2] der Firma CGSecurity das Mittel der Wahl.
Das Programm gibt es nicht nur für Linux, sondern auch für BSD-Derivate, SunOS, Mac OS, DOS und Windows. Die meisten Distributionen führen Testdisk in ihren Archiven, einige installieren es sogar vor. Auch auf Datenrettung spezialisierte Werkzeugsammlungen wie Parted Magic, SystemRescueCD oder Ultimate Boot CD bringen den Datenretter mit.
Das Anwendungspaket besteht aus Testdisk selbst, das verlorene Partitionen von einer breiten Vielfalt von Dateisystemen wiederherstellen kann und nicht bootende Laufwerke wieder startfähig macht, sowie der eigentlichen Datenrettungssoftware Photorec [3]. Um deren GUI geht es in diesem Artikel im Besonderen.
Beide Anwendungen sind kostenfrei und unterliegen der GPLV v2+. Wenn Sie die Grundlagen von Testdisk ergründen und lernen möchten, wie man damit Partitionstabellen wiederherstellt, empfehlen wir Ihnen die Lektüre eines älteren LU-Artikels [4].
Nicht nur Fotos
Zwar wurde Photorec ursprünglich zur Datenrettung bei Digitalkameras entwickelt, doch anders als der Name suggeriert, gräbt es nicht nur nach gelöschten Fotos, sondern auch nach vielen anderen Dateiformaten. Die Liste der unterstützten Formate umfasst mehrere Hundert Einträge [5]. Erfreulicherweise liegt die Dokumentation zu dieser komplexen Materie auch auf Deutsch vor. Sowohl Testdisk als auch Photorec arbeiten unterhalb der Dateisystemebene und funktionieren daher auch dann noch, wenn das Dateisystem schwer beschädigt wurde.
Photorec erlaubt das Analysieren der Dateisysteme FAT, NTFS, exFAT, Ext2/3/4 und HFS+. Bei Testdisk fällt die Liste der unterstützten Dateisysteme zwar länger aus, es ist aber nicht so auf die Wiederherstellung von Daten spezialisiert wie Photorec. Letzteres funktioniert unter anderem auf Festplatten, CD-ROMs, Compact Flash, Speicher-Sticks, SD-Karten, SmartMedia, Microdrives, MMCs, USB-Laufwerken und Festplattenabbildern.
Bei beiden Werkzeugen handelt es sich um Kommandozeilen-Tools, die aber eine Menüsteuerung aufweisen, sodass Sie keine Befehle mehr eintippen müssen. Damit Testdisk und Photorec ihre Arbeit versehen können, müssen Sie sie als Root starten.
QPhotorec als GUI
Für Photorec befindet sich schon seit Längerem in Form von QPhotorec eine grafische Oberfläche in Entwicklung. Die integriert Testdisk allerdings erst ab Version 7.1 – alle gängigen Distributionen stellen in ihren Repositories jedoch derzeit noch Testdisk 7.0.x bereit.
Zwar deklariert das Entwickler-Team Testdisk 7.1 noch als Beta, doch da die GUI gerade ungeübten Anwendern den Umgang mit der heiklen und stressbehafteten Materie erleichtert und QPhotorec zudem alle Funktionen der Kommandozeilenversion bietet, wollen wir im Folgenden zeigen, wie Sie das Frontend im Fall der Fälle einsetzen.
Die Beta-Version von Testdisk müssen Sie zur Installation aktuell noch aus dem Quellcode bauen, nur so steht auch die QPhotorec-GUI zur Verfügung (Abbildung 1). Das ist kein Hexenwerk, wie der Kasten “Aus den Quellen” zeigt. Für Debian kursiert im Netz ein QPhotorec-Paket aus dritter Hand – es wurde allerdings seit Jahren nicht gepflegt und liegt auch nicht im Quellcode vor. Also besser Finger weg.

Abbildung 1: Das Kompilieren von Testdisk ist schnell erledigt. Danach starten Sie QPhotorec aus der Konsole oder fügen es ins Menü ein.
Für RPM-Distributionen liegen ebenfalls Pakete vor, die aber noch auf Version 7.0.x basieren [6]. Diese haben wir nicht getestet. Unter Arch Linux steht Version 7.1 im Anwenderarchiv AUR zur Verfügung, auch Gentoo verfügt über die aktuellen Quellen. Wir verwenden für unseren Test eine unter Debian selbst erstellte Version.
Aus den Quellen
Um Testdisk aus dem Quellcode zu bauen, müssen Sie zuerst das System vorbereiten. Stellen Sie zunächst sicher, dass Testdisk nicht aus den Paketquellen installiert ist, und spielen Sie die nötigen Abhängigkeiten zum Kompilieren sowie die entsprechend passenden Kernel-Header ein.
Je nach verwendeter Distribution folgen Sie dazu entweder Listing 1 (Debian, Ubuntu und Derivate) beziehungsweise Listing 2 (Fedora und andere RPM-basierte Distributionen). Danach erstellen Sie in Ihrem Home-Verzeichnis den Ordner photorec-7.1/, klonen den Testdisk-Quellcode aus dem Github-Repository des Projekts dorthin und bauen das Programm (Listing 3).
Nach dem Bauvorgang können Sie QPhotorec über das Kommando sudo qphotorec aus dem Terminal aufrufen. Um es im Menü zu verankern, bearbeiten Sie als Root mit einem Texteditor die Datei /usr/local/share/applications/qphotorec.desktop und passen die mit TryExec= und Exec= beginnenden Zeilen entsprechend Listing 4 an.
Listing 1
$ sudo apt purge testdisk $ sudo apt install build-essential e2fslibs-dev libncurses5-dev libncursesw5-dev ntfs-3g-dev libjpeg-dev uuid-dev zlib1g-dev qtbase5-dev qttools5-dev-tools pkg-config dh-autoreconf git $ sudo apt install linux-headers-$(uname -r)
Listing 2
$ sudo dnf remove testdisk $ sudo dnf install libtool autoconf automake desktop-file-utils e2fsprogs-devel libewf-devel libjpeg-devel ncurses-devel ntfs-3g-devel zlib-devel libuuid-devel qt5-linguist qt5-qtbase-devel openssl-devel pkgconfig $ sudo dnf install @development-tools kernel-devel kernel-headers
Listing 3
$ mkdir ~/photorec-7.1 $ cd ~/photorec-7.1 $ git clone https://github.com/cgsecurity/testdisk.git $ cd ~/photorec-7.1/testdisk $ mkdir config $ autoreconf --install -W all -I config $ ./configure && make $ sudo make install
Listing 4
[Desktop Entry] [...] TryExec=qphotorec Exec=sh -c "xhost +si:localuser:root; pkexec env DISPLAY="$DISPLAY" XAUTHORITY="$XAUTHORITY" /usr/local/bin/qphotorec %F; xhost -si:localuser:root" [...]
Simple Oberfläche
QPhotorec benötigt keine Konfiguration, in der simpel gehaltenen Oberfläche gibt es kaum etwas einzustellen. Im Hauptfenster wählen Sie zunächst oben in der Zeile, die mit Disk beginnt, die Festplatte und dann die Partition aus, von der Sie Daten restaurieren möchten.
Unten links stellt das Programm automatisch das verwendete Dateisystem ein, was Sie jedoch vorsichtshalber kontrollieren sollten. Rechts finden Sie zwei Optionen, die deutlichen Einfluss auf die Intensität und damit die Dauer des Scan-Vorgangs haben (Abbildung 2). Mehr Optionen bietet auch die textbasierte Version des Datenretters nicht (Abbildung 3).

Abbildung 2: Die Oberfläche von QPhotorec lässt sich schnell durchschauen. Die einzige potenzielle Fehlerquelle stellt die Auswahl einer falschen Partition dar.

Abbildung 3: Wie in der GUI gilt es auch auf der Kommandozeile, bei der Auswahl der Partition Vorsicht walten zu lassen.
Standardmäßig wählt QPhotorec die erste Option Free:Scan for file from unallocated space only aus. Damit suchen und finden Sie gelöschte Daten im nicht zugewiesenen Speicher. Die zweite Option Whole: Extract files from whole partition scannt und extrahiert die Daten der gesamten Partition. Das Scannen benötigt in diesem Fall besonders bei großen Partitionen geraume Zeit, die Variante verspricht aber bei beschädigten Dateisystemen mehr Erfolg.
Zwei Regeln gelten für Kommandozeile und GUI gleichermaßen: Arbeiten Sie mit diesen Werkzeugen immer nur im Live-Modus. Sichern Sie zudem die wiederherzustellenden Daten nie auf derselben Partition, auf der sie verloren gingen.
Test für den Ernstfall
Für einen Text haben wir einen 16 GByte großen USB-Stick mit einer Reihe von Ordnern und Dateien mit einem Volumen von 30 MByte präpariert und diese dann gelöscht. Insgesamt befanden sich 19 Dateien auf dem Datenträger, vertreten waren die Dateiformate PNG, JPEG, PDF, TXT, AI und DEB (Abbildung 4).

Abbildung 4: Zum Test löschten wir 19 Dateien unter Umgehen des Papierkorbs per rm -rf von einem USB-Stick.
In beiden Modi benötigte der Suchdurchlauf sowohl von der Konsole als auch über die GUI bei insgesamt je 10 Durchläufen etwa fünf Minuten, um alle 19 Dateien plus 3 versteckte UEFI-Files wiederherzustellen (Abbildung 5). Die einzige vermerkbare Inkonsistenz lag darin, dass QPhotorec bei zwei Durchläufen mit der einfachen Methode keine Daten fand. Erst beim Scannen der gesamte Partition klappte die Datenrettung.

Abbildung 5: QPhotorec schlüsselt anders als die Konsolenvariante nach Abschluss der Datenrettung die Zahl der geretteten Dateien nach Dateiformat auf.
Der Statusreport im letzten Dialog nach dem Scannen gab dann Anlass für etwas Entspannung, QPhotorec wusste alle Daten zu retten. Ein Blick in den Ordner mit den wiederhergestellten Dateien sorgte allerdings für Stirnrunzeln: Die Namen der von der Festplatte gekratzten Dateien lauten nicht mehr wie vor dem Löschen. Stattdessen tragen Sie Namen aus kryptischen Zeichen und Zahlen, lediglich die Dateiendung bleibt erhalten (Abbildung 6). In seltenen Fällen kommt es sogar vor, dass Dateien gar keine Endung mehr aufweisen. In diesen Fällen erhalten Sie über das Kommando file Datei Informationen zum Dateityp und ergänzen entsprechend der Ausgabe den Dateinamen.

Abbildung 6: Dateinamen werden aus technischen Gründen durch Zahlen und Zeichen ersetzt. Im Normalfall bleibt aber zumindest das Dateiformat erhalten.
Hilfe beim Sortieren
Bei einer großen Partition kommen schnell viele Tausend Dateien zusammen, was eine sehr zeitaufwendige und langweilige manuelle Rekonstruktion nach sich zieht. Das stellt keine Eigenart von Testdisk dar, sondern ist technisch bedingt und auch bei teurer Rettungssoftware nicht anders. Manche Programme versuchen zwar, die Originalstruktur samt Ordnern wiederherzustellen, das gelingt aber bei Weitem nicht immer.
Wenn es sich bei den wiederhergestellten Daten nur um Fotos handelt, bietet es sich an, die Bilder aus den mit recup_dir.x bezeichneten Verzeichnissen in einen einzigen neuen Ordner zu verschieben. Danach verwenden Sie eine Fotoverwaltung wie Shotwell, um die Fotos zu importieren. Die Anwendung erlaubt dann, die Bilder nach Jahr und Monat in eigene Ordner zu sortieren. Das hilft beim Auffinden von gesuchten Fotos.
Auch der Hersteller CGSecurity bietet auf seiner Webseite einige Skripte und Tricks zum Sortieren an [7]. Am besten gefiel uns aber ein Skript auf Github [8], das die Fundstücke nach der jeweiligen Erweiterung in eigene Ordner sortiert und somit für Überblick sorgt (Abbildung 7). Das Skript laden Sie unter Debian, Ubuntu und deren Derivaten mit den Befehlen aus den ersten drei Zeilen von Listing 5 auf den Rechner. Dann führen Sie es über das Kommando python recovery.py aus (letzte Zeile).

Abbildung 7: Das Skript Sort-Photorec hilft dabei, das Dateichaos nach der Wiederherstellung zu vermindern.
Listing 5
$ sudo apt install python-pip $ pip install exifread $ git clone https://github.com/dcummuta/sort-PhotorecRecoveredFiles.git $ cd sort-PhotorecRecoveredFiles $ python recovery.py /Pfad/zu/Dateien/ ~/Sortiert/
Fazit
Geht es darum, gelöschte Daten von einer Festplatte oder einem Speicherstick zu retten, zählen Testdisk und Photorec unter Linux zum Standardrepertoire. Mit der neuen Oberfläche QPhotorec gelingt die Datenrettung ebenso zuverlässig wie mit der Kommandozeilenversion. Sobald die Entwickler Testdisk 7.1 offiziell freigeben, entfällt der Schritt des Kompilierens, denn dann ist die GUI bereits im Paket enthalten.
Infos
-
Datenrettung mit Testdisk/Photorec: Ferdinand Thommes, “Aus dem Orkus”, LU 11/2015, S. 40, http://www.linux-community.de/35755
-
Dateiformate: https://www.cgsecurity.org/wiki/Wiederherstellbare_Dateiformate_unter_PhotoRec
-
QPhotorec-RPM: https://pkgs.org/download/qphotorec
-
Sortieren: https://www.cgsecurity.org/wiki/Nach_dem_Gebrauch_von_PhotoRec
-
“Sort files recovered by Photorec”: https://github.com/dcummuta/sort-PhotorecRecoveredFiles





