Übersicht
Stichwortsuche
History
Versionen
Kategorien
Alle Artikel
Kernel: Versionen ab 2.0
Sie haben auf einem Linux ext2 Dateisystem versehentlich eine oder mehrere Dateien gelöscht. Sie haben kein Backup und wollen den Inhalt dieser Datei wiederherstellen.
Wie auch unter anderen Betriebssystemen üblich wird auch auf dem Linux ext2 Dateisystem eine Datei dadurch `gelöscht', daß entsprechende Verweise in der Folderdatei gelöscht werden. Die eigentlichen Daten der Datei sind nach dem eigentlichen `löschen' zwar zum Überschreiben freigegeben, aber noch auf der Festplatte lesbar. Erst beim Anlegen weiterer Dateien werden diese nun freigegebenen Datenblöcke überschrieben.
Zudem existiert auch nach dem Löschen die sog. Inode in der die logische Verkettung der Blöcke und die ganzen Zugriffsrechte gespeichert sind. Zudem wird hier auch der Zeitpunkt des Löschens (`Deletion time') festgehalten. Was wirklich durch das Löschen endgültig verloren gegangen ist ist der Dateiname.
Durch Setzen eines Flags mit Hilfe des Kommandos chattr
kann
man auf dem ext2 Dateisystem auch ein `sicheres' Löschen beim Absetzen eines
Löschkommandos bewirken. Hierdurch wird die Datei vom Kernel beim Löschen
vollständig mit Nullen überschrieben. Solchermassen gelöschte Daten sind nur
u.U. mit speziellen Geräten, keinesfalls aber mit der hier beschriebenen
Methode wiederherstellbar.
Eine Warnung vorneweg Mit dem im folgenden beschriebenen
Programm debugfs
können Sie sehr systemnahe Zugriffe auf das
Dateisystem durchführen. Ohne genaue Kentniss der Interna des ext2
Dateisystems ist es sehr gefährlich für Ihre restlichen Daten mit den in der
Hilfe bzw. in der Man-Page zu `debugfs' beschriebenen Kommandos zu
`experimentieren'. Falls Sie experimentieren möchten, so legen Sie sich am
besten eine Übungspartition an.
Führen Sie keine Schreibzugriffe mehr auf das Dateisystem aus
auf dem Sie Dateien wiederherstellen möchten. Insbesondere das Neuanlegen
von Dateien kann fatal für Ihre zu rettenden Daten sein. Falls Sie nur eine
Partition `/' verwenden so fahren Sie den Rechner am besten geordnet
herunter und booten mit einem Rettungssystem. Ansonsten reicht es wenn Sie
auch die betroffene(n) Partition(en) mit dem Kommando umount
aushängen. Zur Verwendung von mount und umount beachten Sie bitte das
Handbuchkapitel "Einstieg in Linux".
Nehmen wir einfach an Sie haben folgende Datei versehentlich gelöscht und wollen Sie wiederherstellen.
erde:/mnt/Versuch # ls -la Protokoll_2009.txt -rw-r--r-- 1 cg suse 1050 Dec 29 13:31 Protokoll_2009.txt erde:/mnt/Versuch # rm Protokoll_2009.txt
Sie umounten die betreffende Partition sofort.
erde:~# umount /mnt
In meinem Beispiel handelt es sich um die Partition
/dev/sdc1
die auf den Mountpoint /mnt
gemounted
ist. Sie müssen natürlich den Devicenamen in Ihrem System in den unten
aufgeführten Beispielen einsetzen. Geben Sie bitte das Kommando
debugfs devicename
ein um den Filesystemdebugger aufzurufen.
Dieser meldet sich nach dem Start mit dem Prompt debugfs:
an
dem Sie Kommandos zum direkten Zugriff auf das Dateisystem eingeben
können.
erde:/# debugfs /dev/sdc1 debugfs 1.17, 26-Oct-1999 for EXT2 FS 0.5b, 95/08/09 debugfs: lsdel 1 deleted inodes found. Inode Owner Mode Size Blocks Time deleted 25794 515 100644 1050 2/ 2 Wed Dec 29 13:32:32 1999
Mit dem Kommando lsdel
kann man sich also die gelöschten
Inodes auflisten lassen. An den Dateirechten Mode, dem Eigentümer
(Hier als numerische User id), dem Zeitpunkt des Löschens und der ehemaligen
Dateigrösse Size können Sie recht gut die wiederherzustellende
Datei auffinden falls Sie mehrere Dateien gelöscht haben (und beispielsweise
nur eine wiederherstellen möchten). Wichtig ist hier für das folgende
dump
Kommando vor allem die Inode Nummer, im obigen Beispiel
25794.
Geben Sie folgendes Kommando ein um die oben gelöschte Datei mit den gleichen Dateirechten als neue Datei `gerettet' im Verzeichniss /tmp wiederzubeleben. Beachten Sie bitte, daß Sie die spitzen Klammern < und > mit eingeben!
debugfs: dump -p <25794> /tmp/gerettet debugfs: quit erde:/# ls -l /tmp/gerettet -rw-r--r-- 1 cg suse 1050 Dec 29 13:31 /tmp/gerettetNach dieser Aktion können Sie das Dateisystem wieder mounten und die Datei aus dem /tmp Verzeichniss zurückspielen.
Es gibt noch weitere Methoden diese Datei wiederherzustellen, doch diese Methode hat den Vorteil keine Schreibzugriffe über debugfs oder nach vollzogener Wiederherstellung einen Dateisystemcheck zu benötigen.
Stichwörter: DATEISYSTEM, GELÖSCHT, GELOESCHT, LOESCHEN, LÖSCHEN, EXT2
Kategorien:
Dokumentation
Übersicht
Stichwortsuche
History
Versionen
Kategorien
Alle Artikel