menu.jpg  ::  Home ::  Computing ::  Downloads ::  Scooter ::  Links ::  Music ::  Nonsense ::  Mail :: 

Retten geloeschter Dateien unter ext2

Entgegen gängiger Meinungen ist es durchaus möglich, auch unter Linux versehentlich gelöschte Dateien wieder herzustellen. Dabei ist allerdings folgendes zu beachten:

Des weiteren sollte man beachten, dass die Möglichkeit, eine versehentlich gelöschte Datei zu retten, proportional zur Dauer der seit dem Löschvorgang verstrichenen Zeitspanne sinkt. Je eher man Rettungsversuche unternimmt, desto grösser ist die Chance, die Daten zu retten.

Und immer im Hinterkopf behalten: Ein funktionierendes Backup ist durch nichts zu ersetzen und erspart so manchen "Klimmzug" der gleich beschriebenen Form!

BTW: Ich habe hier etwas über meine derzeitige Datensicherungsmethode geschrieben.

Und der Krimi geht los: Retten einer versehentlich gelöschten Datei unter ext2 (Tragödie in 3 Akten).

1. Der Weg in die Katastrophe

Das Home-Verzeichnis des Users "jimbob" befindet sich im Verzeichnisbaum unter '/home/jimbob'. Das Verzeichnis 'home' wiederum ist auf dem Device '/dev/sdd3' (bei IDE-Systemen möglicherweise unter '/dev/hdd3') ins Dateisystem eingebunden.

Die entsprechende Zeile in der Datei '/etc/fstab' lautet also:

   /dev/sdd3 /home/jimbob ext2 rw 0 2

Der User 'jimbob' hat in seinem Home-Verzeichnis eine Datei namens 'test' mit folgendem Inhalt angelegt:

   # cat /home/jimbob/test
   Der Fisch fliegt...

Die Datei hat folgende Attribute:

   # ls -l /home/jimbob/test
   -rw-r--r--    1 jimbob   walton         20 Jul  6 23:42 test

Das Unheil nimmt seinen Lauf: 'jimbob' löscht versehentlich die Datei 'test', deren Inhalt für ihn (niemand weiss so recht wieso, but anyway) eminent wichtig ist. Ein zeitnahes Backup steht natürlich nicht zur Verfügung.

2. Alles wird wieder gut

Die Rettung der gelöschten Datei läuft mit folgenden Schritten ab:

2.1 Als Super-User das entsprechende Dateisystem ausbinden

   # su -
   # umount /home

2.2 Einen genialen Befehl aufrufen

Das Programm 'debugfs' ist ein interaktiver Debugger für das ext2-Dateisystem, der nach seinem Aufruf über einen eigenen Prompt vedienbar ist. Ein Übersicht der an diesem Prompt verfügbaren Befehle kann man sich mittels folgende Befehles ausgeben lassen:

   debugfs: help

Zuerst setzt man 'debugfs' auf das eben ausgebundene Dateisystem an:

   # debugfs /dev/sdd3

2.3 Die gelöschten Dateien ausgeben lassen

Am Prompt des interaktiven Befehles 'debugfs' lässt man sich eine Liste der gelöschten Dateien ausgeben:

   debugfs: lsdel

Aus der nun folgenden - üblicherweise mehrere Bildschirmseiten füllenden - Ausgabe, die leider nicht die jeweiligen Namen der gelöschten Dateien enthält, muss die zu rettende Datei herausgepfriemelt werden.

Die Ausgabe könnte folgendermassen aussehen:

   4711     0  93678  6/  6  Sat Jul  6 17:23:29 2002
    239  1000     20  1/  1  Sat Jul  6 15:27:15 2002
    184  1000   4377  1/  1  Mon Jul  1 23:22:57 2002

Die Spalten enthalten folgende wesentlichen Angaben:

Spalte Angabe
1 Inode Nummer
2 User-ID
4 Dateigrösse
6 Datum des Löschens

Da die Ausgabe leider keine Dateinamen, sondern nur die inodes mit den gelöschten Dateien enthält, sollte man sinnvoller Weise zuerst Dateien mit der eigene User-ID "herausfischen" und bei diesen dann auf die Dateigrösse und das Datum des Löschens achten. Detailwissen über das, was das Dateisystem von der gelöschte Datei wusste, ist jetzt also äusserst hilfreich.

2.4 Die gelöschte Datei wiederherstellen

Im Beispiel hat es sich um eine relativ kleine gelöschte Datei gehandelt, die erst vor Kurzem von 'jimbob' (User-ID 1000) gelöscht wurde.

Mit folgenden Befehlen wird der Inhalt des inodes 239, der die gelöschte Datei '/home/jimbob/test' beinhaltet, in die Datei '/tmp/saved' ausgegeben und das Programm wieder verlassen:

   debugfs: dump <239> /tmp/saved
   debugfs: quit

3. Verifizierung der geretteten Daten

   # cat /tmp/saved
   Der Fisch fliegt...

4. Das Dateisystem wieder einbinden

Zu guter Letzt bindet man das zwecks Wiederherstellung ausssgebundene Dateisystem wieder ein und wird wieder User:

   # mount /home
   # bye

Und alles ist noch einmal gut gegangen, weil unter den gängigen Linux-Dateisystemen Recovery-Aktionen durchaus möglich sind.

5. Alternative Methoden

Es gibt folgende Alternativen zu der beschriebenen Methode:


Valid XHTML 1.0

Zurück zur Main-Site
Impressum
Created with GNU-Emacs on Sat Jul 6 15:32:07 CEST 2002

Valid CSS