Verlorene Dateien wiederherstellen ext3 ext4

Aus Linupedia.org
Version vom 9. Dezember 2009, 22:33 Uhr von Robi (Diskussion | Beiträge) (ext3grep extundelete Vorstellung)
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

Einleitung :
ext3grep ist ein Konsol Programm von Carlo Wood. Es wurde wohl aus der Not heraus entwickelt und die allgemeine Vorgehensweise und das Prinzip sind in seinem Howto sehr schön beschrieben. Carlo Wood hatte die revolutionäre Idee aus dem Filesystem-Journal Backups von früheren Inodeblöcken zu gewinnen und mit deren Hilfe die Datenblöcke der gelöschten Dateien wieder zu finden.


Vorteile :
Es kann gezielt Kopien sowohl von, einzelnen gelöschte Dateien, von ganzen gelöschten Verzeichnissen oder auch von allem Gelöschte des ganzen Filesystems mitsamt Dateinamen mit Path und orginal Zugriffsrechten und Zeitstempel wieder hergestellt werden. Man kann dabei den Löschzeitraum zeitlich eingrenzen, so das man gezielt nur versucht die Dateien wieder zu gewinnen, die während diesen Zeitraumes gelöscht wurden. Es kann eine Liste aller Dateinamen erstellt werden und möglich ist auch einer Art Löschstatistik die die Anzahl der Löschvorgänge im zeitlichen Zusammenhang anzeigt. Damit ist es möglich den interessanten Löschzeitraum gut einzugrenzen. Eine Reihe zusätzliche Optionen ermöglichen sehr gute und hilfreichen Informationen aus dem Filesystem und aus dem Journal für das Auffinden von gelöschten oder verlorenen Dateien auch in speziellen Problemfällen. Jedoch einfaches normales Wiederherstellen von kürzlich gelöschten Dateien ist damit ohne spezielle Kenntnisse mit nur wenigen Optionen wohl für die meisten fast problemlos auf der Konsole machbar.


kleine Mängel :
Das Programm arbeitet relativ langsam, so das größere Filesysteme entsprechend sehr lange Laufzeiten haben. Es ist sehr viel im Programm starr einprogrammiert worden. Dadurch ist es nicht flexibel genug, um alle möglichen Eigenschaften des Filesystems zu berücksichtigen. ext4 Filesysteme funktionieren zum Beispiel gar nicht. Das Programm wird scheinbar vom Entwickler selbst zZ nicht mehr ernsthaft weiterentwickelt und ist auch im Quelltext nicht sonderlich übersichtlich und strukturiert, so das auch andere Entwickler hier sehr schwer einen Einstieg für eine Weiterentwicklung finden könnten.


Fazit (des Autor dieses Wikibeitrages) :
Einfach genial für Standard ext3, aber leider nicht flexibel genug für ext4 .


Installation
Hinweise und Beispiele zur Benutzung

extundelete

Einleitung:
extundelete ist eine konsequente Neuentwicklung der Idee von ext3grep. Im Unterschied zu ext3grep greift extundelete konsequent auf die Funktionen des ext2fs library zu. Dadurch wird es nicht nur sehr viel schneller, sondern erhält automatisch die notwendige Flexibilität für eine sehr gute Unterstützung des ext3/4 Filesystems.


Vorteile :
Sehr brauchbare Laufzeiten auch in großen Filesystemen. Flexibel sowohl auf ext3 wie ext4. Analoge Funktionen und ebenfalls analoge Befehls-Optionen zu ext3grep. Es wird derzeit aktiv daran entwickelt.


kleine Mängel :
Das gesammte Projekt ist noch sehr jung (wenige Monate), dadurch sind noch längst nicht alle Funktionen implementiert. Noch keine brauchbare Doku. Die Projektseite ist wohl auch noch nicht richtig in Schwung gekommen, ein Zugriff auf den "Version Control for Source Code" bracht bisher auch nur ein leeres Verzeichnis.


Fazit (des Autor dieses Wikibeitrages) :
Noch sehr junges Projekt mit sehr guten Potential. einige Test Wiederherstellung von Dateien und Verzeichnissen sowohl auf ext3 wie ext4 begeistern. Auch wenn derzeit noch keine Symlinks und noch keine Zugriffrechte und Zeitstempel wiederhergestellt werden können.


Installation
Hinweise und Beispiele zur Benutzung

Links und Quellen

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