Verlorene Dateien wiederherstellen ext3 ext4

Aus Linupedia.org
Version vom 9. Dezember 2009, 19:34 Uhr von Robi (Diskussion | Beiträge) (Grobgliederung und Anfang)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
Höhe=24px
Achtung dieser Artikel ist noch in Arbeit und dient vorläufig nur als Vorlage. Dieser Beitrag zu Linux oder der Abschnitt ist in Bearbeitung. Weitere Informationen findest du hier. Der Ersteller arbeitet an dem Beitrag oder Abschnitt und entsorgt den Wartungsbaustein spätestens 3 Tage nach der letzten Bearbeitung. Änderungen außer Rechtschreibkorrekturen ohne Absprache mit dem Urspungsautor sind möglichst zu vermeiden, solange dieser Baustein noch innerhalb der genannten Frist aktiviert ist.
 noch etwas Geduld, dauert noch ein paar Tage Robi 19:34, 9. Dez. 2009 (UTC)



Wird eine Datei gelöscht, dann bleiben die Datenblöcke dieser Datei von der Löschung unberüht. Die Löschung der Datei erfolgt in den Verwaltungsdaten ( Inode) der Datei sowie in den Verzeichnissen die die Inodenummer mit dem Dateinamen verknüpft. In einem ext3/4 Filesystem werden die Daten in der Inode soweit gelöscht, das es schwierig wird eine versehendliche Löschung wieder rückgängig zu machen. Lange Zeit war das etwas für Spezialisten und dem Filesystem Debugger. debugfs

Da es trotz größter Vorsicht hin und wieder mal jedem passieren kann, an dieser Stelle ein paar Hinweise und Links was heute auf ext3/4 möglich und machbar ist. Was man wissen sollte und wie man vorgehen kann.


Gelöschte Dateien auf einem ext3 oder ext4 Filesystem wiederherstellen

wiederherstellen von versehendlich gelöschten offene Dateien

Dateien aus dem /proc Verzeichs wiedergewinnen

Gelegentlich kommt es vor und man löscht eine Datei versehentlich und merkt sofort, Hilfe: diese Datei habe ich ja gerade noch in einem anderem Programm in Benutzung.

Wenn man dieses rechtzeitig bemerkt, dann ist es ersteinmal Halb so schlimm. Solange eine Datei von einem Prozess noch geöffnet ist, existiert im Rechner noch der Verweis auf die Datei, und der entsprechende Prozess kann weiter mit dieser Datei arbeiten, auch wenn man sie im Dateisystem nicht mehr findet. Andere Prozesse die diese Datei jetzt öffnen wollen, werden sie auch nicht finden. Sobald der letzte Prozess der eine solche schon gelöschte Datei schließt, oder dieser Prozess beendet wird, dann ist diese Datei dann entgültig gelöscht. Diese kann man zum Beispiel auch bemerken wenn man versucht eine Überlage aktuelle Logdatei zu löschen. Man hat die Riesen-Datei gelöscht, sieht sie auch nicht mehr mit "ls", aber der Speicherplatz dieser Datei wird einfach nicht freigegeben. Diese Logdatei ist dann noch von einem Prozess geöffnet der hier seine Logs nach wie vor in die schon gelöschte Datei weiter schreibt, die Datei kann also durchaus noch weiter anwachsen. Erst wenn dieser Prozess beendet wird, dann wird der Plattenplatz den diese Datei belegt hat wirklich freigegeben.

Eine solche Datei kann man mit dem Befehl lsof finden.

 rob@dhcppc0:~/Dokumente> lsof -a +L1 /home
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NLINK    NODE NAME
more    5139  rob    3r   REG    8,6    72830     0 1143264 /home/rob/Dokumente/orig.txt (deleted) 

Wir sehen die Datei ist vom Befehl "more" mit der PID 5139 in Arbeit und wird als "deleted" angezeigt. In der Spalte FD finden wir "3r" Das Bedeutet: dieser Prozess greift mit dem Filediskriptor Nr 3 lesend (r) zu. "5w" würde dann also Filediskriptor 5 hat schreibenden Zugriff auf diese Datei.

Diese Datei können wir jetzt im /proc Verzeichnis finden.

rob@dhcppc0:~/Dokumente> ls -l /proc/5139/fd/*
lrwx------ 1 rob users 64  9. Dez 19:09 /proc/5139/fd/0 -> /dev/pts/0
lrwx------ 1 rob users 64  9. Dez 19:09 /proc/5139/fd/1 -> /dev/pts/0
lrwx------ 1 rob users 64  9. Dez 19:09 /proc/5139/fd/2 -> /dev/pts/0
lr-x------ 1 rob users 64  9. Dez 19:09 /proc/5139/fd/3 -> /home/rob/Dokumente/orig.txt (deleted)

Allerdings, können wir hier auch nicht direkt auf die schon gelöschte Datei zugreifen, aber wir können ihren Inhalt auslesen und diesen wieder als Datei schreiben. Dabei würde jetzt eine neue Datei mit gleichem Namen und gleichem Inhalt angelegt.

rob@dhcppc0:~/Dokumente> cat /proc/5139/fd/3 > /home/rob/Dokumente/orig.txt
rob@dhcppc0:~/Dokumente> ls -l /home/rob/Dokumente/orig.txt
-rw-r--r-- 1 rob users 72830  9. Dez 19:24 /home/rob/Dokumente/orig.txt

Das ganze funktioniert auf diese Weise solange wir es mit "nur zum Lesen geöffnet" Dateien haben. Ist diese Datei zum Schreiben geöffnet, können wir so auch jederzeit eine Momentaufnahme dieser Datei erzeugen. Doch danach wird der Prozess weiterhin in die alte, schon gelöschte Datei, weiterschreiben. Diese Änderungen werden dann natürlich nicht mehr in unserer neu angelegten Datei gemacht. So das es hier sein kann, das wir die letzten Änderungen an der Datei verlieren. ZB bei Datenbankdateien währe sowas dann allerdings fatal. Hier könnte zB tail helfen um die Datei mit allen Änderungen vollständig wieder herzustellen. Siehe auch Beispiele



Ich habe gerade all meine Daten gelöscht, Erste Hilfe

Dateien anhand ihres Types mit einem Flächenscan aus den Datenblöcken wieder gewinnen

PhotoRec

Die Dateien mit Hilfe alter Filesystem-Journaldaten wieder herstellen

ext3grep

extundelete

Links und Quellen

# http://www.nongnu.org/ext2-doc/ext2.html Dokumentation "The Second Extended File System"