Geht das überhaupt?
Es geht (zumindest mit ext2-Partitionen; bei ReiserFS ist nichts mehr zu retten). Solange die Datei noch nicht von anderen Daten überschrieben worden ist. (Je mehr freier Platz auf der betroffenen Partition vorhanden ist, desto größer sind die Chancen.)
Dazu benötigt man das Programm recover
.
Man sollte es bereits installiert haben, sonst überschreibt man bei der installation evtl. die Daten. (Ein simples "make; make install" reicht zu Installation).
Um zu verhindern, daß die Daten der gelöschte Datei überschrieben werden, fährt man das System in Runlevel 1 herunter:
init 1
(Wer das Risiko liebt, kann auch darauf verzichten.)
Dazu stoppt man noch alle Daemonen wie syslogd und klogd, um das Risiko zu minimieren.
Vor dem Start von recover sollte man die kurze Manpage durchlesen. In der Regel muß man recover als root
starten, da ein normaler Benutzer keine Rechte auf die Festplatten-Devices haben sollte. (Es wäre auch ein großers Sicherheitsproblem recover
als suid root zu installieren.)
Nach dem Aufruf von recover
will das Programm zuerst die Partition wissen, auf der die gelöschte Datei liegt, und bietet eine Auswahl der vorhandenen Partitionen an. Nachdem recover
die Partition durchforstet hat (Geduld!), fragt es nach einigen Faktoren, um die Auswahl einzugrenzen.
Kurz darauf meldet sich recover
mit "ninodes found" und will ein Verzeichnis wissen, in dem sie abgelegt
werden sollen. Auf keinen Fall das aktuelle Verzeichnis angeben! (Sonst endet es in einer Endlosschleife.) Am besten wählt man ein neues/leeres Verzeichnis auf einer anderen Partition. Das ist am sichersten.
Im Anschluß kann man noch einen Text eingeben, der in der gelöschten Datei vorkommen soll.
In dem angegebenen Verzeichnis sind nun Dateien vorhanden, deren Name mit dump
beginnt. Nun muß man nur noch die gesuchte Datei finden, umbenennen oder kopieren und den Rest wieder löschen.
Hinweis:
Es gibt keine Garantie, daß die wieder hergestellte Datei unbeschädigt ist, aber die Wahrscheinlichkeit ist hoch.