Datenrettung mit TestDisk / PhotoRec: Wieder mal ein Fall von “Life is too short to remove USB safely”
PhotoRec aus dem TestDisk-Paket kann ein echter Lebensretter sein. Ich habe einen Anruf bekommen: “Mein Windows erkennt die externe Festplatte nicht mehr *Panik* *Panik* … da sind alle meine Fotos und so weiter drauf!”
Ich: “Wo ist denn das Backup?”
Antwort: “Hab ich keines …” … *Schweigen* …
Ich: “Klickt die Platte?”
Antwort: “Nein …”
Ich: “Pack die Platte ein und komm vorbei.”
In einem recht kurzen Gespräch hat sich dann herausgestellt, dass es ein Fall von “Life is too short to remove USB safely” ist. Also Festplatte nicht sauber ausgeworfen – Peng. Das geht Hunderte Male gut und irgendwann kracht es halt. Die Festplatte war mit NTFS formatiert. Windows hat sie gar nicht mehr erkannt und Linux hat das gemacht.
Das sieht zunächst einmal furchtbar aus, ist allerdings noch nicht schlimm, da die Festplatte in diesem Fall physisch in Ordnung war oder immer noch ist.
Nun könnte man sofort mit allen möglichen Maßnahmen auf die Festplatte einprügeln, aber ich wusste ja nicht, ob ein Hardware-Defekt vorliegt.
Zunächst ein Image / Abbild ziehen
Bevor man auf dem Datenträger hantiert, ziehen wir zunächst einmal ein Abbild. Das hat zwei Vorteile.
- Sollte die Platte am Sterben sein, kann man die Daten vielleicht trotzdem noch retten. Man hat auf jeden Fall das Abbild auf einem anderen Datenträger. Ist das geschafft, darf die Platte den Geist aufgeben.
- Man kann direkt mit dem Abbild arbeiten und muss die Festplatte eigentlich gar nicht mehr anfassen.
Wie macht man ein Abbild?
Da gibt es mehrere Möglichkeiten, aber in diesem Fall bevorzuge ich dd. Wie man oben sieht, ist der Datenträger /dev/sdb. Also sieht mein Befehl aus:
dd if=/dev/sdb of=/pfad/zu/abbild/abbild.img bs=4k
oder in meinem Fall
dd if=/dev/sdb of=/home/bitblokes/backup.img bs=4k
Das Abbild ließ sich erstellen und so versuchten wir zunächst, die Festplatte mit den Windows-Tools zu prüfen / retten. Windows hat sich aber quer gestellt und angeboten, die Festplatte zu formatieren. Das haben wir erst einmal gelassen und uns unter Linux wieder dem Abbild gewidmet.
Wie gesagt handelt es sich um NTFS und ich habe versucht, das Abbild unter Linux einzubinden, auch wenn ich mir davon wenig Erfolg versprach. Aber man kann es ja mal versuchen – als read only versteht sich -o ro!
sudo ntfs-3g -o ro -o loop /home/bitblokes/backup.img /home/bitblokes/ntfs
Kein Erfolg. Nun hilft nur noch die grobe Keule: PhotoRec.
TestDisk und PhotoRec
PhotoRec ist im Paket TestDisk enthalten und damit kann man Festplatten, Partitionen und Abbilder durchsuchen lassen. PhotoRec erkennt dabei, wenn es sich um eine JPG, DOC, MP3, ZIP und so weiter (die komplette Liste der unterstützten Dateien gibt es hier) handelt und kopiert diese Datei in einen von uns definierten Restore-Ordner.
Das Problem an der Sache ist, dass PhotoRec in diesem Fall keinen Zugriff auf den Index des Datenträgers hat. PhotoRec kann zwar die Dateien wiederherstellen, die Namen und in welchen Ordnern sie gespeichert waren ist allerdings verloren.
Doch das ist immer noch besser als die ganzen Daten zu verlieren. Also rufen wir PhotoRec auf und geben als Quelle die Abbild-Datei an:
photorec /pfad/zu/abbild
oder in meinem Fall
photorec /home/bitblokes/backup.img
Wie gesagt könnte man auch direkt mit /dev/sdb hantieren, aber so ist das sicherer.
Nachdem man dann ausgewählt hat, wohin die Recovery-Dateien gespeichert werden sollen, fängt PhotoRec auch schon an, die ersten Daten zu finden.
Nun ist Geduld angesagt, da der Prozess einige Stunden dauern kann und das Ergebnis sieht nicht schön aus. Einige Hundert nummerierte Ordner und etliche Dateien darin.
Nun braucht man nur noch die Zeit, sich durch die Daten zu wühlen. Insgesamt kamen fast 94.000 Dateien und ein sehr langes, aber doch glückliches Gesicht heraus.
Aber selbst nach der Aktion mit PhotoRec kann man noch etwas machen, um dem armen Backup-Sünder etwas unter die Arme zu greifen. Man fragt einfach ein bisschen und weiß dann sehr genau, welche Daten sicherlich nicht mehr gebraucht werden. Zum Beispiel konnten wir .sqlite, .java und noch viel anderes Geraffel gleich in die Tonne kloppen. Man begibt sich auf der Kommandozeile in den Recovery-Ordner und macht dann solche Sachen:
find ./ -iname "*.txt" -exec rm {} \;
Das würde alle txt-Dateien ohne Nachfrage löschen. -iname ist in diesem Fall besser, da Groß- und Kleinschreibung nicht beachtet wird. Somit konnten wir schon einige Tausend Dateien sofort in die Tonne treten und es ist wieder ein bisschen leichter.
AUch wenn nun Daten gerettet und gelöscht sind, ist das Abbild immer noch da. Sollte tatsächlich eine ganz dringende Datei fehlen, kann man das Abbild nochmals durch PhotoRec jagen.
Und die Moral von der Geschicht?
Backup ist etwas für Feiglinge, aber wohl dem, der eins hat!
In diesem Fall gab es nur ein Blaues Auge, da der Datenträger physisch in Ordnung war. Zeit kostet es halt, die Daten wieder zu sortieren.
Diese Methode mit TestDisk und PhotoRec lässt sich nicht nur mit Festplatten durchführen. Das kann man mit allen Datenträgern machen: USB-Sticks, SD-Karten, SSD und so weiter …
Jetzt, wo die Daten erstmal sicher sind, könnte man auf die Platte den ntfsfix-Befehl loslassen (man: "repairs some fundamental NTFS inconsistencies, resets the NTFS journal file and schedules an NTFS consistency check for the first boot into Windows. You may run ntfsfix on an NTFS volume if you think it was damaged by Windows or some other way and it cannot be mounted").
Falls erfolglos könnte man mit testdisk schauen ob die Partitionstabelle wiederhergestellt werden kann oder der mbr neu geschrieben.
Wenn viele Fotos gerettet wurden die jetzt alle nichtssagende Dateinamen und Erstellungsdaten haben, könnte man dem Bekannten zu mehr Übersicht verhelfen, indem mit jhead oder exiftools z.B. YYYYMMDD-lfdNr Dateinamen vergeben werden und das Dateierstelldatum auf das Exif CreateDate gesetzt wird (nur sofern Exifinformationen in den Files sind, natürlich).
Und nochmal Danke für die Backuperinnerung (*mal schnell die zweite Platte aus der Schublade kram* 🙂 )
Gute Hinweise, danke. Merke ich mir. Aber wenn es zu einfach wäre, bliebe der Lerneffekt aus ;-)...