Versehentlich gelöschte Dateien und Ordner auf EXT3 und EXT4 Dateisystemen wiederherstellen

Geschrieben von Eric Scheibler am 14.11.2012

Vor ein paar Tagen habe ich mein Home Verzeichnis versehentlich um einige wichtige Daten erleichtert. Das geht manchmal schneller als man denkt… Bei mir war’s ein, an der falschen Stelle ausgeführtes rm *.

In solch einem Fall muss das betreffende Laufwerk umgehend ausgehängt oder der Rechner gleich ganz heruntergefahren werden denn die gelöschten Dateien sind zu dem Zeitpunkt theoretisch noch vorhanden. Bis dahin wurde nur der Verweis auf den Speicherort gelöscht und dem Betriebssystem mitgeteilt, dass es die frei gewordenen Blöcke erneut nutzen kann. Früher oder später werden die verloren gegangen Dateien also wirklich überschrieben, daher ausschalten und von einer Live CD wie Knoppix oder GRML booten.

Ich habe mehrere Möglichkeiten ausprobiert, die Daten zurückzuholen und am besten ist mir dies mit Extundelete gelungen. Nebenbei war dies auch noch die einfachste Lösung.

Vorgehen

  1. Die gelöschten Dateien befinden sich auf einer Partition, die leicht ausgehängt werden kann, z.B. ein USB Stick dann:
# umount /mnt/folder
apt-get install extundelete
  1. Die Dateien befanden sich auf der Root Partition oder wie bei mir im Home Verzeichnis. Dann ist das Aushängen nicht oder nur sehr schwer möglich, daher herunterfahren. Im folgenden verwende ich Knoppix, welches ich auf einen USB Stick installiert habe. Somit ist es mir im Gegensatz zu einer reinen Live CD möglich, Software nachzuinstallieren. Den Knoppix USB Stick kann man leicht erstellen, wenn man die Knoppix CD brennt, davon bootet und dann im Einstellungsmenü “Auf Flash Disk speichern” auswählt.

Hat man vom USB Stick gebootet, sollte man sich zunächst darum kümmern, dass ein C++ Compiler und Make installiert werden:

# apt-get update
# apt-get install build-essential

Dann werden noch ein paar Abhängigkeiten aufgelöst:

apt-get install e2fsprogs e2fslibs e2fslibs-dev

Als nächstes den Source Code herunterladen:

wget "http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.0/extundelete-0.2.0.tar.bz2"

entpacken und das Verzeichnis betreten:

tar xfj extundelete-0.2.0.tar.bz2
cd extundelete-0.2.0

Installieren:

./configure
make
# make install

Nachdem Extundelete auf die eine oder andere Art und Weise installiert wurde, kann der Wiederherstellungsprozess beginnen. Zunächst muss man herausfinden, welche Partition die gelöschten Daten enthält. FDisk:

# fdisk -l

Für die geretteten Daten sollte man sich einen USB Stick oder eine externe HDD zurechtlegen. Bei mir sieht das Setup so aus:

  • /dev/sda2: Partition mit den verloren gegangenen Daten
  • /dev/sdb1: Knoppix Stick
  • /dev/sdc1: Backup Stick

Da meine Systempartition (/dev/sda2) verschlüsselt ist, muss ich sie zunächst entschlüsseln, um die Daten retten zu können. Wer keine Verschlüsselung betreibt, kann diesen Part überspringen. Programme installieren:

# apt-get install cryptsetup cryptmount
# cryptsetup luksOpen /dev/sda2 encrypted

Den Backup Stick einbinden:

mkdir /media/backup_stick
mount /dev/sdc1 /media/backup_stick
cd /media/backup_stick

Nun kann Extundelete gestartet werden, am einfachsten, indem einfach alles wiederhergestellt wird, was geht. Ohne Verschlüsselung:

extundelete /dev/sda2 --restore-all

mit Verschlüsselung:

extundelete /dev/mapper/encrypted --restore-all

Nach kurzer Wartezeit finden sich im neu angelegten Ordner “RECOVERED_FILES” alle gefundenen Dateien, waren bei mir etwa 80%.