Archiv

Posts Tagged ‘ext3’

Wiederherstellung gelöschter Dateien (ext2/ext3)

2010/11/09 Kommentare aus

ext2

Es wurde versehentlich eine Datei gelöscht und das letzte Backup ist unbrauchbar oder nicht vorhanden ? Keine Panik, es besteht die Möglichkeit diese Dateien wiederherzustellen, wenn Sie ein ext2 Dateisystem verwenden.

Als erstes sollten Sie unbedingt die verwendete Partition (in unserem Beispiel /dev/sda3) unmounten, um weitere Schreibzugriffe zu verhindern :

umount /dev/sda3

Falls Sie Die Partition nicht unmounten können oder wollen sollte sie zumindest read-only gemountet werden :

mount -o remount,ro /dev/sda3

Damit wird ein Überschreiben der eventuell noch vorhandenen Daten verhindert. Nun können Sie daran gehen, die gelöschten Dateien wiederherzustellen :

debugfs /dev/sda3

debugfs meldet sich mit

debugfs 1.41.3 (12-Oct-2008)
debugfs:

und erwartet ein Eingabe.

help liefert Ihnen eine Liste aller verfügbaren Befehle. Tippen Sie nun lsdel.

Es erscheint ein Listing der gelöschten Dateien, leider sind keine Dateinamen mehr vorhanden. Jedoch lässt sich anhand der gegebenen Informationen recht genau ermitteln, was für Sie von Belang ist. Wichtig sind hier vor allem die Inode-Nummer und die Zeit, zu der die Datei gelöscht wurde. Auch die Dateigrösse und die User-ID kann Ihnen beim Wiederauffinden helfen. Anhand der Inode-Nummer lässt sich die entsprechende Datei wiederherstellen, beispielsweise mit :

dump <1030004> /tmp/undeletedfile

Wobei 1030004 die Inode-Nummer der wiederherzustellenden Datei ist und diese nach /tmp/undeletedfile geschrieben wird.

Nach Wiederherstellung aller relevanten Daten können Sie debugfs mit

q

beenden und sich das Ergebnis in /tmp ansehen.

ext3/ext4

Da ext3 bei einer Löschung die Block-pointer im Inode mit Nullen überschreibt (im Gegensatz zu ext2, das nur die Inodes als frei markiert) ist eine Wiederherstellung einmal gelöschter Dateien normalerweise nicht möglich.

Jedoch besteht die Möglichkeit, das Dateisystem mit ‚grep‘ nach bekannten Mustern zu durchsuchen um Textdateien wiederauffinden zu können. Zuerst sollten Sie jedoch das Dateisystem wie bereits oben angesprochen aushängen bzw. read-only remounten.

Nehmen wir nun an dass eine C-source Datei helloworld.c gelöscht wurde und Sie wissen dass sich irgendwo mitten in der Datei die Zeichenfolge ‚/* helloworld.c */‘ befunden hat. Die Datei war maximal 20 Zeilen lang. Mit diesen Informationen ist eine Wiederherstellung bereits möglich :

strings /dev/sda3 | grep -B 20 -A 20 '/* helloworld.c */' > /tmp/undeletedfile

Damit wird nach dem bekannten Muster „/* helloworld.c */“ in der Partition /dev/sda3 gesucht und nach /tmp/undeletedfile geschrieben. -A gibt an, wieviele Zeilen nach dem gefundenen Muster ausgegeben werden sollen, -B die Anzahl der Zeilen davor (mit -B 20 und -A 20 haben wir einen ausreichen Sicherheitsabstand, da die Datei max. 20 Zeilen lang ist und sich das gesuchte Muster ca. in der Mitte befindet).

Das war natürlich nur eine von vielen Möglichkeiten, Sie können auch direkt nach dem Dateinamen suchen und sich die darauf folgenden Zeilen ausgeben lassen z.B. :

strings /dev/sda3 | grep -A 20 helloworld.c > /tmp/undeletedfile