Verlorene Dateien wiederherstellen ext3 ext4
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.
Inhaltsverzeichnis
- 1 Gelöschte Dateien auf einem ext3 oder ext4 Filesystem wiederherstellen
- 1.1 wiederherstellen von versehendlich gelöschten offene Dateien
- 1.2 Ich habe gerade all meine Daten gelöscht, Erste Hilfe
- 1.3 Dateien anhand ihres Types mit einem Flächenscan aus den Datenblöcken wieder gewinnen
- 1.4 Die Dateien mit Hilfe alter Filesystem-Journaldaten wieder herstellen
- 1.5 Links und Quellen
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"