Vor einiger Zeit hat mich ein Hilferuf aus der Verwandtschaft erreicht: Eine alte 200 GB Festplatte, in einem externen 3,5 Zoll Gehäuse hat ihren Geist aufgegeben. Hätte man ein Backup wäre das nicht weiter tragisch. Allerdings wird es richtig richtig tragisch, wenn man zum einen keine Sicherung hat und zum anderen seine Daten über Jahre ausschließlich auf diese Platte gesichert hat.
Das ist dann wirklich der Worst-Case: Vollständiger Datenverlust. Darunter natürlich Familienfotos, wichtige Dokumente und dergleichen.
Nachdem sich jemand anderes mit einem Windows-Tool schon die Zähne daran ausgebissen hatte (und wochenlang versuchte irgendwas auszulesen), war es nun an mir einen Versuch zu starten. Große Hoffnung hatte ich zwar nicht, aber einen Versuch war es wert, der Windows-Welt wieder mal zu beweisen, dass Linux einfach die besseren Mittel bereitstellt – Challenge accepted sozusagen ;-)
Nachdem ich jetzt im Urlaub endlich Zeit fand, die Sache anzugehen, bemühte ich erst mal Google, um alle wichtigen Infos zur Datenrettung unter Linux zu sammeln. Hilfreich dafür war wieder mal das Wiki von ubuntuusers.de mit dem passenden Artikel zur Datenrettung.
Nach weiteren Recherchen kam ich zum Schluss, es mit folgenden Tools zu versuchen:
- ddrescue zum Auslesen der Festplatte (Achtung: ddrescue ist die neuere Version von dd_rescue und in einem anderen Paket enthalten!)
- PhotoRec als Bestandteil von Testdisk zum Auslesen des mit ddrescue erzeugten Images
Als erstes installieren wir die benötigten Pakete:
sudo apt-get install gddrescue testdisk
Nun schließen wir die Festplatte an und prüfen mit der Eingabe dmesg in der Konsole, welches Device angeschlossen wurde.
Der Teil der Ausgabe, der uns dabei interessiert ist in der nachfolgenden Zeile enthalten:
[ 5939.722811] sdc: sdc1 < sdc5 >
Die Partition sdc5 werden wir auslesen, dies passiert mit dem Befehl:
sudo ddrescue /dev/sdc5 /media/extern/backup.iso
Wir lesen also mit ddrescue die Partition sdc5 aus (entsprechend anpassen, welche Partition/Platte ihr auslesen wollt) und speichern das Abbild der Partition auf einer externen Festplatte, in meinem Fall nach /media/extern/ gemountet. Die Abbilddatei hat in meinem Beispiel backup.iso und kann natürlich auch einen anderen Namen tragen.
Achtung! Die Festplatte auf der das Image geschrieben wird, sollte genug freie Kapazität haben, da ddrescue die komplette Partition sichert, egal, ob sie tatsächlich voll ist oder nicht. Es wird jeder Sektor ausgelesen und ins ISO geschrieben. Bei größeren Festplatten kann das schnell problematisch werden, da man entsprechend große Speicherreserven vorhalten muss. In meinem Fall waren es „nur“ 200GB, die ich allerdings auch erstmal frei machen musste.
ddrescue liest also die komplette Partition/Platte aus, was entsprechend lange dauert. Treten recht viele Fehler auf, dauert der anschließende Korrekturprozess nochmal einige Stunden. Die ganze Rücksicherung der Daten in ein ISO hat bei meinen 200GB ca. 2 Tage gedauert. Bei größeren Datenmengen dauert der Spass sicherlich entsprechend länger.
Hat man die Geduld nicht verloren und meldet ddrescue endlich, dass es fertig ist, hat man zwar das ISO-Abbild, kann damit aber noch nicht recht viel anfangen. Für die weitere Verwendung gibt es verschiedene Vorgehensweisen:
- Ist das Dateisystem nicht beschädigt, kann das ISO direkt gemountet werden.
- Ist das Dateisystem beschädigt, kann versucht werden es zu reparieren.
- Ist das Dateisystem nicht zu reparieren, können die Rohdaten mit PhotoRec ausgelesen werden.
Da ich nicht wusste ob das Dateisystem beschädigt wurde, versuchte ich zuerst das Image zu mounten, dies geschieht mit nachfolgendem Befehl:
sudo mount -o loop -t ntfs-3g /media/extern/backup.iso /media/iso
Ich wusste, dass es sich um eine NTFS Partition handelt und wollte das ISO entsprechend unter /media/iso mounten. Leider ohne Erfolg, weil anscheinend das Dateisystem doch beschädigt wurde. Mein nächster Versuch war, die Daten mit PhotoRec direkt auszulesen. PhotoRec ist ein Konsolenprogramm, das per Eingabedialog abfrägt, was wohin extrahiert werden soll. Ziemlich selbsterklärend das ganze, gestartet wird der Prozess mit:
sudo photorec backup.iso
Haken an der ganzen Sache: Ordnerstrukturen und Dateinamen gehen verloren! Es macht also nur als letzte Option Sinn, denn wer will schon alle Ordner und Dateien selbst sortieren und/oder benamen. Aber v.a. dann wenn Daten gelöscht wurden, ist PhotoRec eine große Hilfe, denn auch diese kann es wieder auslesen.
Ich suchte also etwas weiter und fand das Konsolen-Tool ntfsfix, das im Paket ntfsprogs enthalten ist:
sudo apt-get install ntfsprogs
Danach versucht man sein Glück mit:
sudo ntfsfix backup.iso
Dies brachte bei mir den Erfolg und ich konnte endlich das ISO entsprechend mounten und die Daten rauskopieren :-)
sudo mount -o loop -t ntfs-3g /media/extern/backup.iso /media/iso
Der ganze Spass hat etwa 3 Tage gedauert und hat verloren geglaubte „uralte“ Daten wieder brauchbar gemacht. Also: Es ist immer einen Versuch wert, die Daten einer defekten Festplatte auszulesen – zumindest mit Linuxmitteln ;-)