Ext4magic: Inode - Directory - Journal - Installation - Zeit-Optionen - Tricks&Tipps - Manpage - Expert-Mode
|
ext4magic |
|
---|---|
|
|
Basisdaten |
|
Entwickler: |
|
Aktuelle Version: |
0.3.2 |
letzte Veröffentlichung: |
12.09.2014 |
Betriebssystem: |
Linux |
Kategorie: |
System,Filesystem |
Lizenz: |
GNU General Public License (GPL) |
Dokumentation: |
Englisch Deutsch |
Projekt Seite: |
ext4magic ist ein kleines Tool für die Linux Administration, dass dabei helfen kann, versehentlich gelöschte oder überschrieben Dateien aus einem ext3 oder ext4 Filesystem wieder herzustellen. Gerade auf privaten Rechnern fehlt oft ein ausreichendes und zuverlässiges Backup, oder der Backup Intervall ist aus Kapazitätsmangel viel zu groß gewählt. Nach kleinen oder größeren Konsol- oder Scriptunfällen stellt sich häufig die Frage, kann ich die soeben gelöschten Dateien wieder herstellen?
Inhaltsverzeichnis |
Seit einiger Zeit gibt es schon 2 Programme, ext3grep und extundelete die es ermöglichen, mit Hilfe von alten Journaldaten solche gelöschten Dateien von ext3/4 zu recovern. Die Leistungsfähigkeit beider Programme ist jedoch stark eingeschränkt. Auch ist der Quellcode aus meiner Sicht wenig geeignet, um weitere Eigenschaften der Dateien und des Filesystems zu integrieren. Der gesamte Quellcode ist sehr unübersichtlich und es ist für fremde Entwickler fast unmöglich an diesem Quellcode weiterzuarbeiten. Dieses war für mich der Auslöser das Problem auf den Erfahrungen der beiden Programme aufbauend, noch einmal von ganz unten neu zu entwickeln. Es wurde von Anfang an versucht möglichst viele Filesystem- und Dateieigenschaften schon zu integrieren und mit noch mehr Heuristik das Optimale aus diesen Journaldaten herauszuholen. Ich hoffe es ist mir gelungen, und die vielen Stunden investierter Freizeit sind gut angelegt.
Derzeitig wird an einem Mehrstufen Recover entwickelt. Es ist gedacht speziell für den Fall eines unbeabsichtigten rekursiven Löschens größer Filesystemstrukturen. Es vereint auf revolutionäre Art das Recover von Inodekopien aus dem Journal mit dem "normalen" Recoververfahren ähnlich dem, wie es in den meisten anderen Tools verwendet wird.
ext4magic hat eine ganze Reihe von
Optionen und Funktionen. Auch ohne Hintergrundwissen mit den
default Einstellungen wird es möglich sein damit gute Ergebnisse
zu erzielen. Eine gute Dokumentation und etwas Hintergrundwissen
soll helfen das Maximale in greifbare Nähe zu bekommen. Ich werde
die Dokumentation in nächster Zeit hier komplett in Deutsch im
Wiki aufbauen und dafür auf eine Web-Projektseite verzichten. Über
eine eventuelle Übersetzung sehen wir später weiter.
In diesem Abschnitt werden einige Ausgabeformate
von ext4magic Funktionen beschrieben. Ein wenig Hintergrundwissen
wird vermittelt, welches man benötigen würde, um auch spezielle
ältere Dateiversionen zu finden und zu recovern, oder auch
einzelne Dateien wiederherzustellen, die von den automatischen
rekursiven Recoverläufen von ext4magic eventuell nicht gefunden
werden können.
Ebenfalls sind in diesem Abschnitt wichtige
Informationen und Erfahrungen, wie ext4magic benutzt werden kann
und wie einige Optionen und Parameter am günstigsten und
sinnvollsten zu setzen oder einzustellen sind.
Dreh und Angelpunkt jedes Dateizugriffs ist die Inode.
In der Inode einer Datei sind sämtliche Eigenschaften der Datei hinterlegt, mit Ausnahme der Inodenummer und des Dateinamens. Die Inodenummer ist eine Indexnummer unter der sich die jeweilige Inodedatenstruktur innerhalb einer Inodetabelle befindet. Der oder die (mehrere) Dateinamen befinden sich in den Verzeichnis-Daten, immer zusammen mit einer dazugehörigen eindeutigen Inodenummer.
Die typische Inode Größe war ursprünglich 128 Bit, dort sind alle oder die allermeisten Informationen untergebracht. Heute werden meist 256 Bit Inodegröße angelegt. Bei einer Filesystemgröße von 4 KByte sind somit bei 256 Byte Inodegröße immer 16 Inode in einem Filesystemblock enthalten. Das Filesystem muss bei Veränderungen immer einen ganzen Filesystemblock neu schreiben, und damit auch diesen ganzen Inodeblock ins Journal als Kopie sichern, auch wenn sich nur eine einzelne Inode verändert hat. Somit sind im Journal dann auch Kopien von Inode zu finden, obwohl diese Inode gar nicht verändert wurden.
Der Inhalt der Datei befindet sich in Datenblöcken die von der Inode adressiert werden. Die meisten Eigenschaften einer Datei, so wie sie in der Inode hinterlegt sind, sind fast selbst erklärend und wir brauchen nicht näher darauf eingehen. (Beispiele von Inodeausgaben die von ext4magic erzeugt werden, in der Gegenüberstellung der Ausgabe die stat in Linux anzeigt.)
Einer der Hauptunterschiede zwischen ext3 und ext4 liegt in der Adressierung der Datenblöcke in der Inode. Kenntnisse über die Funktion von Adressierung von ext2/3 oder der ext4 Extents benötigt man bei der Nutzung von ext4magic nicht. Es genügt zu wissen, in beiden Fällen wird beim Löschen der Datei unter anderem die Adressierung der Datenblöcke in der Inode zerstört, in dem sie komplett auf NULL gesetzt werden. In diesem Zustand läßt sich aus dieser Inode keine Datei recovern. Wir benötigen von einer gelöschten Datei immer eine Kopie der Inode im ungelöschtem Zustand.
Ist eine Inode gelöscht, steht sie für eine neue Verwendung für eine neue Datei frei zur Verfügung. Die Wahrscheinlichkeit, das eine Inode sofort oder schnell wieder genutzt wird, ist unterschiedlich groß. Das Filesystem ist bestrebt die Inode in den Verzeichnissen zu gruppieren. Man kann das auch erkennen, wenn man sich mit "ls -il" ein paar Verzeichnisse anschaut. Dort wird man sehr oft Gruppen von aufeinander folgenden Inodenummern finden. Wiederverwendete Inode sind für ext4magic nicht das wirkliche Problem, da sowieso nur die alten Kopien aus dem Journal benötigt werden. Allerdings werden vorzugsweise immer Datenblöcke aus dem gleichem Filesystemabschnitt für neue Dateien verwendet. Damit steigt bei Wiederverwendung von gelöschten Inodes auch die Wahrscheinlichkeit, das auch die beim löschen frei gewordene Datenblöcke schnell wieder überschrieben werden. Dieses wird dann doch zum Problem wenn man gelöschte Daten wieder herstellen will.
Daraus kann man einige Wahrscheinlichkeiten ableiten:
Die genaue Bedeutung der 3 bis 5 Zeitstempel der Inode die von ext4magic angezeigt werden. sollte man kennen. Das Tool benötigt 2 Zeitangaben für seine Suche in den Journaldaten. Die default Einstellung für diese Zeitangaben sind sehr breit und ungenau (letzten 24 Stunden). Um spezielle ältere Filesystem- oder Dateiversionen zu finden muss man dem Programm beim Aufruf genauere Zeitangaben mitgeben. Eine Quelle zum herausfinden von benötigten Zeitenangaben, ist die Ausgabe der Inodedaten. In den Ausgabebeispielen wird die Bedeutung der Zeitstempel hinreichend erklärt.
Verzeichnisse sind eine spezielle Dateiform. In den Daten dieser Dateien stehen die Dateinamen und die dazugehörige Inodenummern eines Verzeichnisses. Die Verkettung der Verzeichnisdateien untereinander ergibt letztlich den Path, innerhalb der eine Datei im Dateibaum des Filesystems gefunden wird.
Die Daten in den Verzeichnisblöcken bestehen aus einer Art Tabelle, in denen außer dem Dateinamen, der dazu gehörigen Inodenummer und einem Flag, welches den Dateitype grob bestimmt, nicht viel mehr enthalten ist. Die einzelnen Einträge sind wie eine Kette untereinander verbunden. Jeder Eintrag enthält einen Hinweis wo der nächste Eintrag beginnt. Werden jetzt Dateien gelöscht, dann wird erst einmal nur diese Verknüpfung verändert und der Eintrag für die gelöschte Datei wird dabei ausgekettet und somit beim Auswerten in der Liste übersprungen. Der ehemalige Dateiname und die dazugehörige Inodenummer bleibt aber erst einmal dort erhalten. Der Eintrag wird nur beim Auslesen der Daten jetzt übersprungen. Eine Bereinigung alten Einträge erfolgt bei Bedarf nach und nach automatisch, wenn die Daten dieses Verzeichnisses wieder neu geschrieben werden. Ur-Alte Einträge bleiben jedenfalls nicht auf ewige Zeit dort enthalten.
Somit ist es für ext4magic möglich auch einen Dateinamen seiner ehemaligen Inodenummer noch zu zuweisen, auch wenn die Datei gelöscht ist. Allerdings gibt es hier einige Probleme. Im Normalfall kann es pro Verzeichnis nicht vorkommen, dass ein Dateiname dort doppelt vergeben ist. Werden die gelöschten Einträge jedoch mit untersucht, dann kann und wird genau das aber vorkommen. Wird eine Datei gleichen Namens mehrfach angelegt und wieder gelöscht, dann hat der Dateiname zeitlich zu jedem Zeitpunkt nur maximal ein Mal im Verzeichnis existiert. In den Verzeichnisböcken werden aber eventuell mehrere dieser Namen gefunden, die dann auf die gleiche oder auf eine ganz andere Inodenummer verweisen, oder Einträge mit diesem Namen die schon teilweise bereinigt wurde und eine Inodenummer "0" enthalten. Bis auf einen Namen müssen alle anderen ausgekettet und somit gelöscht sein.
Auch ist es möglich, das man dort Dateinamen von gelöschten Dateien findet, deren ursprüngliche Inode in der Zwischenzeit schon von einer anderen Datei benutzt wird. Wann eine Datei existiert hat und wann sie gelöscht wurde, kann nur aus der Inode selbst ermittelt werden, auf die der Verzeichniseintrag verweist. Die Zeitoptionen die beim Aufruf an ext4magic mitgegeben werden können, übernehmen anhand der Inodezeiten die Auswahl, welcher Eintrag jetzt herangezogen wird und welcher nicht. Dabei werden zwangsläufig Fehler vorkommen, zB wenn die Daten im Journal unvollständig oder gar nicht mehr vorhanden sind, wenn die Zeitoptionen ungünstig gewählt werden, und auch wenn eine wiederverwendete Inode in der Zwischenzeit auch schon wieder gelöscht ist.
Die Datenblöcke der Verzeichnisse werden
wie die Inodeblöcke bei Veränderungen in das Journal kopiert.
Dort sind sie aber seltener anzutreffen, als die Inodeblöcke. Die
Inodedaten ändern sich viel häufiger und oftmals auch, ohne das
sich die Datenblöcke der Verzeichnisse ändern. ext4magic versucht
immer die passenden Verzeichnisdatenblöcke zu einer Inodekopie
einer Verzeichnisdatei im Journal zu finden. Sind diese jedoch
nicht vorhanden, nimmt das Programm die nächst folgende Kopie
dieses Blockes die es im Journal finden kann. Wird auch so eine
Kopie nicht gefunden, dann wird letztlich der Block aus dem
Filesystem entnommen. Ext4magic kann also nicht mit absoluter
Genauigkeit bestimmen, das der Verzeichnisblock auch wirklich
zeitlich genau zur Inodekopie der Verzeichnisdatei gehört.
Ext4magic ist so programmiert, das es hier mit dem nächst
kleinerem Übel ohne murren weiter arbeitet.
Damit unter diesen Voraussetzungen noch ausreichend vollständige und gute Ergebnisse zu erhalten sind, wird ext4magic dafür aber komplett darauf verzichten, die Auskettung gelöschter Dateinamen in den Tabellen der Verzeichnisblöcken auszuwerten. Nur dort kann es Differenzen geben, wenn eine spätere Kopie eines Verzeichnisblockes benutzt wird. Es nimmt seine Auswertung nur an Hand der Daten in der Inodes vor und behandelt alle einigermaßen plausiblen Einträge in den Verzeichnis Tabellen gleich, egal ob sie gelöscht oder nicht gelöscht markiert sind.
Derzeit gibt es nur eine
Zusatzoption für die Recoveroptionen. -Q
bezeichnet als "optional high quality
Option", die sich wirklich auf Löschmarkierungen in
Verzeichnisdaten verlässt. Beim Benutzen dieser Option werden von
den Einträgen nur ungelöschte berücksichtigt. Diese Option kann
nur wirklich richtig und zuverlässig funktionieren, wenn vom
entsprechendem Filesystem Abschnitt die Kopien der entsprechenden
Verzeichnisdatenblöcke vorhanden sind, und die Zeitoptionen
optimal gesetzt werden. In diesem Fall ist das Ergebnis allerdings
sehr gut, und es werden so gut wie keine Fehler durch doppelt
benutzt Dateinamen oder wiederverwendete Inode entstehen. Nähere
Informationen zu dieser Option im Abschnitt
Tricks und Tipps
Beispiele für Verzeichnisausgaben von ext4magic mit den entsprechenden Erläuterungen.
Das Journal ist der Dreh und
Angelpunkt von ext4magic.
Um die Hauptseite nicht zu überfüllen,
wurde dieser Bereich auf eine eigene
Journalseite ausgelagert.
Eine Installation sollte derzeit nur auf Linux Systemen möglich sein, andere Betriebssysteme sind nicht berücksichtigt.
Einige Distriburtionen stellen Community Pakete zur Verfügung
Die Entwicklung von ext4magic erzeugt einige full feature Pakete mit Hilfe von openSUSE Build Service
Sollte kein fertiges Paket
für die erforderliche Distribution zu finden sein, ext4magic kann
aus dem Quellcode erstellt werden.
Folge den Instruktionen auf
der Installations Seite.
Versionshinweis: derzeit verfügbar
ist:
ext4magic-0.2.4 ( Beta ) beinhaltet Magic-Funktion nur für ext3
ext4magic-0.3.2 ( Beta ) beinhaltet neue Magic-Funktion aktuell nur für ext4
Beim Aufruf von ext4magic muss immer das
Filesystem als Argument mit übergeben werden. Als Filesystem kann
sowohl ein Blockdevice als auch ein Images einer Partition genutzt
werden.
Der sicherste Weg bei allen größeren Filesystem
Problemen und ebenfalls bei der Arbeit mit ext4magic ist immer nur
mit einer Kopie der Partition oder der Platte zu arbeiten und die
Originaldaten nicht zu verändern. Sollte der ersten Versuch ein
Filesystem zu reparieren oder die Daten darauf zu retten nicht
funktionieren, kann erneut eine Kopie von den Originaldaten vom
Filesystem hergestellt werden und mit dieser ein anderes Programm
oder anderes Howto ausprobiert werden. So hat man theoretisch
unendlich viele Versuche verlorene Daten doch noch
wiederherzustellen. Dieser Weg ist auch mit ext4magic anzuraten,
obwohl ext4magic keine Änderungen am Filesystem vornehmen wird.
Bei der Erstellung einer
Kopie des Filesystems entweder als Image, in eine andere Partition
oder auf eine andere Platte sollte folgendes jedoch unbedingt
beachtet werden.
Das Filesystem sollte während des Kopierens
nicht in Benutzung oder maximal read-only gemountet
sein. Beim Erstellen einer Kopie zB mit dd,
werden die Filesystemdaten seriell von Anfang bis Ende kopiert.
Dieses dauert entsprechend der Größe eine gewisse Zeit. Würde
zur gleichen Zeit aber jetzt noch in das Filesystem geschrieben,
dann entstehen mehr oder weniger große Inkonsistenzen in der
Filesystemstruktur. Besonders anfällig dafür ist das
Filesystemjournal. Mit großer Sicherheit ergeben sich so
fehlerhafte Daten im Journal, da der Journalinhalt zeitlich nicht
mit dem Filesystemzustand identisch ist. Dieses wird noch verstärkt
durch die Ringbuffer Verwendung des Journals. Bei einem mount wird
sich fsck nur
für ein vermeintliches Ende in der Journalkopie interessieren,
ext4magic sucht und nutzt jedoch auch alle anderen alten Daten im
Journal. ext4magic würde bei solchen Fehlern im Journal einige
Blockkopien im Journal als Kopien von völlig anderen
Filesystemblöcken interpretieren. Die Fehler und
Fehlinterpretationen die daraus entstehen werden vom Programm
selbst nur bemerkt, wenn sich bei der Verarbeitung völlig absurde
Daten ergeben, ansonsten wird ext4magic mit diesen falschen Daten
weiterarbeiten. Möglich sind dann völlig falsche Ergebnisse,
Fehlermeldungen oder auch Programmabbruch wegen fehlerhafter
Speicherzugriffe.
Anmerkung: |
Kopien des Filesystems die für die Verwendung mit ext4magic vorgesehen sind, sollten vor der Benutzung mit ext4magic nicht, oder maximal "read-only" gemountet werden und kein Filesystemcheck darauf ausgeführt werden. Notfalls das Filesystem mit der Option "-noload" mounten oder vorher eine Kopie des Journals erstellen (Tricks & Tipps). Werden solche Kopien zum schreiben gemountet, werden sonst schon bei einfachen List und Leseoperationen Journaldaten überschrieben und so unnötig Chancen auf Wiederherstellung verschenkt |
Es können sowohl umountete als auch readonly gemountete Filesysteme, oder Image von Filesystem Partitionen direkt benutzt werden. Es soll in diesem Beispielen jeweils nur der Filesystem Superblock angezeigt werden.
ext4magic /PATH/ZUM/IMGAGE/filesystem.image -S
ext4magic /dev/sdb3 -S
Wurde ein Image der kompletten Platte erstellt,
kann dieses mit Hilfe von Loopdevices ebenfalls genutzt werden.
Dazu muss mit einem Offsetwert gearbeitet werden. Unter Tricks
& Tipps ist eine kleines Hilfsscript zu finden, welches
hier helfen könnte.
Das Loopdevice kann dann genau so benutzt
werden wie eine Filesystempartition
ext4magic /dev/loop0 -S
Software RAID , Logische Volume und verschlüsselte Dateisysteme müssen gestartet werden und können dann über den Geräteknoten der auch beim mounten verwendet wird mit ext4magic angesprochen werden. Gemountet sollte die Filesysteme möglichst dabei nicht sein, maximal read-only. Ein ausführliches Beispiel für die Bearbeitung eines mit LUKs verschlüsselten Container ist auf der Tricks und Tipps Seite zu finden.
Im Moment in dem Dateien
versehentlich gelöscht oder überschrieben werden, ist das
Filesystem "read-write"
gemountet. Sobald der versehentliche Fehler bemerkt wird, möglichst
alle weiteren Schreib- und Leseaktionen in diesem Filesystem
unterlassen. Sollte es möglich sein, das Filesystem jetzt
auszuhängen, dann ist das ein guter Zeitpunkt dieses jetzt auch zu
tun, ext4magic kann so im ungemounteten Zustand benutzt werden,
oder zuerst eine Kopie des Filesystems herstellt werden. Wird der
Rechner jetzt herunterfahren oder rebootet, dann ist zu verhindern,
dass beim nächsten Start dieses Filesystem automatisch wieder
"read-write" eingebunden wird. Zum Beispiel durch Start
im Single User Mode,
oder durch auskommentieren in der /etc/fstab.
Ebenfalls zu verhindern ist ein automatischer Filesystemcheck,
dieser könnte beim Aufräumen für das Wiederherstellen von
gelöschten Dateien wertvolle Informationen aus dem Filesystem
entfernen
Kann aus irgend einem Grund das Filesystem nicht ausgehängt werden, kann versucht werden, das Filesystem ohne Unterbrechung nach "read-only" zu remounten.
mount -o ro,noload FILESYSTEM
Ist auch dieses nicht möglich weil Dateien zum Schreiben offen sind, und der Rechner muss zwingend, oder soll jetzt noch mit dem "read-write" eingehängten Filesystem weiter arbeiten, dann auf keinen Fall das Journal eines "read-write" gemountetes Filesystem jetzt direkt mit ext4magic nutzen, auch wenn scheinbar nicht viel auf das Filesystem geschrieben wird. Ausführung dazu und eine mögliche Umgehung des Problems sind auf der Tricks & Tipps Seite hinterlegt.
Das Histogramm ist eine Hilfsfunktion von
ext4magic. Sie soll helfen für die Zeitoptionen die richtigen
Werte anhand von auffälligen Veränderungen im Filesystem zu
finden. Zeitmarken werden von vielen Optionen von ext4magic
erwartet, ansonsten werden voreingestellte Werte benutzt, welche
sehr grob sind und nicht in jedem Fall zum Erfolg führen können.
Das Histogramm ist hier eine gute Möglichkeit um sich im
zeitlichen Verlauf der Geschehnisse zu orientieren und durch
Einschachteln ist es möglich die genauen Werte zu ermitteln.
Die
Ausgaben dieser Optionen sehen einfach aus, sind allerdings ohne
ein wenig Dokumentation nicht ganz einfach zu interpretieren.
dabei gelten folgende Regeln
Das Histogramm wird über alle Inode des Filesystems ausgewertet, die Option dazu ist "-H"
wird zusätzlich ein Verzeichnisname oder eine Inodenummer einer Verzeichnisdatei angegeben, dann wird das Histogramm ausschließlich über alle Inode aus diesem Verzeichnisbaum erstellt. Dabei wird die Verzeichnisstruktur durchlaufen, wie sie sich am Ende des Untersuchungszeitraumes dargestellt hat. (siehe Funktion der "BEFORE" Marke) Wird der Untersuchungszeitraum geändert, können dabei völlig unterschiedliche Ergebnisse erscheinen. Das wird zB dann der Fall sein, wenn durch einen anderen Untersuchungszeitraum sich Teile des Verzeichnisbaumes massiv verändert haben. Es könnten bedeutend mehr oder auch weniger Inode zum betreffenden Verzeichnisbaum gezählt werden, und dadurch andere Werte im Histogramm entstehen.
Beipiele für Histogrammausgaben
Das Programm arbeitet intern in einer Vielzahl von Funktionen mit 2 Zeitmarken.
Diese beiden Zeitmarken entscheiden welche
Inodekopie aus dem Journal bei der internen Bearbeitung benutzt
werden soll, und welche nicht. Somit sind diese Zeitmarken wichtige
Steueroptionen für den Programmablauf und beeinflussen wesentlich
das Ergebnis. Sie sind individuell entsprechend der jeweiligen
Gegebenheiten auf dem Filesystems anzugeben. Die default
Einstellung sind nur eine sehr grobe Einstellung welche in
einfachen Situationen aber schon ausreichen kann. In vielen Fällen
müssen hier jedoch Zeiten vorgegeben werden. (zB. der
Löschzeitpunkt ist älter als 24 Stunden, oder eine Datei wurde
überschrieben, Verzeichnisse wurden verschoben oder
umbenannt)
Genaue Zeitangaben sind dann notwendig, wenn sich
die Datei oder Verzeichnisstruktur wesentlich geändert hat, um
möglichst fehlerfrei die Dateien und Verzeichnisse zu finden, die
zum Zeitpunkt zwischen "AFTER" und "BEFORE"
existent waren.
In Versionen > 0.1.4 gibt es spezielle Optionen für ein mehrstufiges Recover. ( "-m" und "-M" ) Bei diesen Optionen wird eine wesentlich anwendungsfreundliche default Einstellung für die Zeit verwendet. ext4magic versucht hierbei, soweit keine "AFTER" Zeit angegeben wurde, selbständig die optimale Zeit vor dem letztem Löschvorgang zu finden und nutzt diese automatisch ermittelte Zeitmarke für den Recover, auch wenn der Löschvorgang schon länger als 24 Stunden zurück liegt. Diese automatische Suche nach dem Löschzeitpunkt sind jedoch nur optimal für ein versehentliches recursives Löschen gewählt. Genau genommen wird der letzte Löschvorgang gesucht und alle Löschungen die bis 5 Minuten vorher gelaufen sind mit eingeschlossen. Wurde nach einem solchem Löschvorgang dann später jedoch noch eine Datei gelöscht, dann kann dieser Automatismus nicht funktionieren. Ebenfalls nicht funktionieren kann dieses automatische Suchen des Löschzeitpunktes, wenn die Dateien zB. mittels eines Move-Kommandos gelöscht worden sind, da dieses eventuell länger als 5 Minuten gedauert hat. In solchen Fällen muss die "AFTER-Time" angegeben werden, und zwar unmittelbar vor der ersten Löschaktion. Hierzu am Besten den Beginn Löschzeit mittels des Histogramm ermitteln.
Hilfestellung um die Zeitmarken optimal einzusetzen.
ext4magic arbeitet bei den meisten Optionen zum Recovern der Dateien und zum Auflisten der Dateinamen im Verzeichnisbaum intern recursiv und arbeitet sich so unter Zuhilfenahme der Journaldaten durch das Filesystem. Anzugeben ist hierbei das Startverzeichnis als Name oder als Inodenummer. Default (ohne spezifische Eingabe) ist das Wurzelverzeichnis dieses Filesystems der Startpunkt.
Geschrieben werden die recoverten Dateien in
ein seperates Verzeichnis. Dieser Zielordner ist per Voreinstellung
"RECOVERDIR/" im aktuellem Verzeichnis bei Aufruf
des ext4magic Kommandos. Es kann aber auch durch die Option "-d
<target_dir>" beim Aufruf selbst ein Zielordner für
das Recover bestimmt werden. Dieses Verzeichnis sollte sich auf
einem ext3/ext4 Filesystem befinden und genügend freie
Speicherkapazität haben, um die Dateien wiederherzustellen.
Bei Angabe des Startverzeichnisses als Dateiname, werden die Dateien im Zielverzeichnis mit vollem Path wieder angelegt. Wird das Verzeichnis über die Inodenummer adressiert, wird der Name und Path dieser Start-Inode nicht aufgelöst, und das Verzeichnis "<INODENUMMER>" die darin wiederhergestellten Daten enthalten. Darunterliegende Datei- und Verzeichnisnamen werden voll aufgelöst.
ROBI@LINUX:/ # ext4magic /dev/hda3 -f rob/Bilder -r "RECOVERDIR" accept for recoverdir Filesystem in use: /dev/hda3 Using internal Journal at Inode 8 Inode found "rob/Bilder" 737371 Inode 737371 is allocated -------- RECOVERDIR/rob/Bilder/pict0074.jpg -------- RECOVERDIR/rob/Bilder/pict0083.jpg
die selben Dateien wiederhergestellt mit Adressierung über die Verzeichnis Inode
ROBI@LINUX:/ # ext4magic /dev/hda3 -I 737371 -r "RECOVERDIR" accept for recoverdir Filesystem in use: /dev/hda3 Using internal Journal at Inode 8 Inode 737371 is allocated -------- RECOVERDIR/<737371>/pict0074.jpg -------- RECOVERDIR/<737371>/pict0083.jpg
ROBI@LINUX:/ # ext4magic /dev/sda3 -f rob/Bilder -L Filesystem in use: /dev/hda3 Using internal Journal at Inode 8 Inode found "rob/Bilder" 737371 Inode 737371 is allocated DIR 737371 rob/Bilder --- 754190 rob/Bilder/scan05.jpg --- 754333 rob/Bilder/scan07.jpg --- 754411 rob/Bilder/scan09.jpg --- 754437 rob/Bilder/scan01.jpg DIR 738576 rob/Bilder/Male_2009 --- 738577 rob/Bilder/Male_2009/imga0211.jpg --- 738578 rob/Bilder/Male_2009/imga0212.jpg
Dateinamen die nur aktuell benutzte Datenblöcke haben, werden nicht mit angezeigt, Somit werden hier nicht angezeigt, gelöschte Dateien, die sich nicht mehr herstellen lassen, weil alle Datenblöcke überschrieben sind, ebenfalls nicht angezeigt werden alle ungelöschte Dateien die Datenblöcke besitzen.
ROBI@LINUX:/home/rob/test # ext4magic testfile.iso -f "user1" -b 1275076685 -l Filesystem in use: testfile.iso Using internal Journal at Inode 8 Activ Time after : Thu May 27 23:02:29 2010 Activ Time before: Fri May 28 21:58:05 2010 Inode found "user1" 60929 Inode 60929 is allocated 92% user1/cimg1433.jpg 88% user1/cimg1434.jpg 94% user1/cimg1435.jpg 100% user1/cimg1436.jpg 100% user1/cimg1437.jpg 100% user1/cimg1438.jpg 100% user1/cimg1439.jpg 100% user1/cimg1441.jpg
Ebenso können einzelne Dateien mit den Optionen "-R"
und "-r" sowie eine Dateinamenslisten mit diesen
beiden Optionen wieder hergestellt werden. Das Verhalten in Bezug
auf unbenutzte Datenblöcken ist analog dem oben beschriebenen. Die
Verzeichnis Eigenschaften werden hier nicht gesetzt. Eine einzelne
Datei zu recovern kann dazu benutzt werden, um eine bestimmte
Inodekopie mit Hilfe der Transaktionsnummer auszuwählen. Dieses
kann zB genutzt werden wenn sich eine Datei innerhalb kurzer Zeit
mehrfach geändert hat und man eine bestimmte Version der Datei
recovern möchte. Bei ext3 kann es gelegentlich vorkommen, dass im
Journal der Löschprozess einer sehr großen Datei in 2 Stufen
vermerkt ist. ext4magic wird in den automatischen Recoverläufen
die erste ungelöschte Inodekopie vor der BEFORE-Zeit benutzen, bei
Dateien die in mehreren Etappen gelöscht worden sind, ist das
nicht die gesamte ursprüngliche Datei. Auch hier kann man die
gesamte Datei gezielt über die Transaktionummer wieder herstellen.
Die Ausgabe beim Wiederherstellen von
Dateien ist in allen Fällen gleich.
Beispielausgabe von einem
Recover:
-------- RECOVERDIR/user1/cimg1436.jpg -------- RECOVERDIR/user1/cimg1437.jpg -------- RECOVERDIR/user1/cimg1438.jpg -------- RECOVERDIR/user1/cimg1439.jpg -------- RECOVERDIR/user1/cimg1441.jpg
Die führende Ausgabe von "--------" bedeutet hier, die Dateieigenschaften konnte ordnungsgemäß wieder hergestellt werden. Sollten sich beim Wiederherstellen der Dateien und ihrer Eigenschaften Probleme ergeben haben, so sind diese in diese hier in diesem String als "x" markiert. Solche Warnmeldungen können bei unzureichenden Zugriffsrechten auf das Zielverzeichnis, (zB. wenn auf ein Windowsfilesystem recovert würde) entstehen, oder wenn vorher schon mit der Option "-R" Teile des Filesystems recovert worden sind und die recoverten Verzeichnisse sehr strengen Zugriffsrechte haben. Ein weiterer Versuch noch weitere Dateien zu recovern, könnte dann uU. in einigen Verzeichnissen auf einen Schreibschutz stoßen
Eine Auflistung aller möglichen Fehlerwarnungen.
x------- |
Probleme beim Recover aufgetreten oder Hardlink konnte nicht erstellt werden. |
-x------ |
undefinierte Probleme die Datei auf die richtige Größe zu beschneiden. |
--x----- |
Problem die recoverte Datei in das richtige Zielverzeichnis zu verschieben, eine solche Datei ist dann im Recoververzeichnis mit der Inodenummer im Dateinamen zu finden. |
---x---- |
Probleme die Datei der original UserID und GruppenID zuzuweisen |
----x--- |
Probleme beim Herstellen der original Linux-Zugriffsrechte |
-----x-- |
Probleme beim setzen der orginal mtime und atime Zeitstempel der Datei |
------x- |
Fehler beim recovern der ext2/3/4 Dateiattribute (ab Version 0.1.4) |
-------x |
reserviert für ACL,SEL und weitere |
Hardlinks können nur innerhalb eines einzelnen Recover Laufes passend erstellt werden. Erfolgt das Recover in mehreren Einzelschritten oder mehrfach hintereinander in das selbe Recover-Verzeichnis, können die Dateinamen nicht zu den passenden Dateien eines vorherigen Recoverdurchlauf verlinkt werden.
Bei dieser Option wird versucht die Probleme bei wiederverwendetet Dateinamen und wiederverwendeten Inode richtig aufzulösen. Dazu sind jedoch Journaldaten von den entsprechenden Verzeichnisdaten notwendig. Diese Option führt nur in speziellen Einzelfällen zu besseren Ergebnissen, global angewendet erreicht man meist das Gegenteil. Nutzbar ist die Option vor allem in Verzeichnissen in denen oft Dateien erzeugt umbenannt und gelöscht werden, und dabei gleiche Dateinamen mehrfach verwendet werden. Nähere Einzelheiten dazu sind im Abschnitt Tricks und Tipps zu finden.
Es handelt sich dabei um ein mehrstufiges Recoververfahren, das speziell für das Wiedergewinnen versehentlich rekursiv gelöschter Verzeichnisse oder des gesamten versehentlich gelöschten Filesystems entwickelt wurde. Die Idee dahinter, zuerst wird versucht mit den Inodekopien des Journals so viele Dateien wie möglich zu recovern. Alle Datenblöcke die dabei recovert werden konnten, werden notiert. Anschließend werden die Metadaten ausgewertet, welche während des Löschens im Journal geschrieben wurden. Aus diesen Metadaten kann ermittelt werden, welche Datenblöcke während des Löschens als wieder frei verfügbar markiert wurden. Die Differenz zwischen den Blöcken, welche während des Löschens markiert wurden und den Blöcken die schon im ersten Schritt recovert worden sind, müssen jetzt alle Datenblöcke der Dateien enthalten, die nicht aus den Inodekopien wieder hergestellt werden konnten.
Diese Datenblöcke werden
in einem anschließenden weiteren Programmteil untersucht, um mit
Hilfe von bekannten Dateiheadern und einprogrammierten weiteren
Dateieigenschaften zu versuchen die gelöschten Dateien so wieder
zu finden und zu recovern. Als Datenbasis und Untersuchungsroutine
werden hierbei Funktionen und die Datenbank des Linux Befehls file
verwendet. Die Library die dabei genutzt wird,
nennt sich libmagic
und ist letztlich auch Namensgeber für diese
Optionsgruppe und schon in der Namensgebung von ext4magic
eingegangen.
Somit ergibt sich eine Kombination von 2 Recoververfahren, zuerst über Inodekopien und anschließend noch ein Filecarving mit ähnlicher Arbeitsweise wie sie auch in vielen anderen Recoverprogrammen genutzt wird. Im Gegensatz zu den meisten Recoverprogrammen, welche die Filesystemmetadaten weitestgehend ignorieren und damit dann auch defekte Filesysteme und viele unterschiedliche Filesysteme recovern wollen, geht die Magic Funktionen von ext4magic sehr speziell und genau auf die Filesystemeigenschaften und die Metadaten ein und verwendet zur Steuerung zusätzlich noch Journaldaten.
Dieses Verfahren hat einige Vorteile ist
allerdings in der Anwendung auf ein funktionierendes Filesystem
sowie brauchbare Journaldaten angewiesen. Es arbeitet nur
zuverlässig für den speziellen Zweck für den es konzipiert
wurde. "Ein großer Löschvorgang war das Letzte das im
Filesystem passiert ist". Die default Einstellungen sind
optimiert auf einen Löschvorgang der nicht länger als 5 Minuten
gelaufen ist. Das sollte für die Folgen eines versehentlich
gestarteten "rm -rf ....." ausreichen. In allen
weiteren Fällen muss die AFTER-Time manuell kurz vor den Beginn
des Löschvorganges gesetzt werden. Das ist zB notwendig wenn die
Dateien während eines recursiven move aus dem Filesystem heraus
verschoben wurden, und somit erst gelesen und dann gelöscht
wurden, aber im Zielverzeichnis nicht oder nicht vollständig
angekommen sind. Dieses wird wohl länger als 5 Minuten gedauert
haben.
Der Löschvorgang sollte möglichst die letzte Aktion im
Filesystem gewesen sein, danach das Filesystem umounten und
möglichst nicht wieder mounten und schon gar keinen fsck ausführen
lassen. Geeignet ist diese Funktion insbesondere dann, wenn
wichtige Dateien, Bilder und Dokumente gelöscht wurden und
möglichst alle/viele davon wiederherstellt werden sollen.
Vorerst gibt es eine Magic-Scanner-Stufe nur
für ext3. (eine verbesserte und schnellere Version ist in
Entwicklung und für ext4 aktuell in 0.3.0-pv2 enthalten). Die
magische Funktion hat in der aktuellen Version eine breite
Unterstützung für die meisten gebräuchlichen Bild-, Audio- und
Video Dateitypen, kennt viele Archive- und Kompressionsformate,
kann Open Office Dokumente, HTML, und PDFs und vieles mehr
recovern. Allein die nackte magische Funktion braucht keinen
Vergleich mit anderen File Carving Programmen zu scheuen, und bei
ext4magic sind noch Recoverstufen vorgeschaltet, die es der
magischen Funktion bedeutend leichter machen, Dateien anhand ihrer
Datenblöcke zu erkennen.
Ext4magic kennt hierbei 2 Optionen :
-M
diese Option ist dann anzuwenden, wenn das komplette Filesystem
gelöscht wurde.
Die Option -m ist gedacht für den Fall,
dass nur Teile des Filesystems gelöscht sind.
Zusätzlich kann noch mit
der Option "-d DIRECTORY"
das Verzeichnis angegeben werden, wohin die
Dateien zu recovern sind. Eine Verwendung der Option "-j
JOURNALKOPIE " ist ebenfalls
möglich. Als Zeitoptionen könnte optional die "-a
AFTER-Zeitmarke" angegeben
werden, diese muss unmittelbar vor dem Beginn des Löschvorganges
gesetzt sein. Wird diese Zeitmarke nicht mit angegeben, versucht
ext4magic den richtigen Zeitpunkt vor dem letzten Löschvorgang aus
den Filesystemdaten selbst herauszufinden. (letzte registierte
Löschung -5 Minuten siehe
auch ). Alle anderen Optionen werden ignoriert oder führen
beim Programmaufruf zu Fehlermeldungen.
Typischer Aufruf von ext4magic nach dem kompletten Löschen eines Filesystems
ext4magic /dev/sda6 -M
bzw. wenn das Zielverzeichnis für die recoverten Daten noch mit angegeben werden soll
ext4magic /dev/sda6 -M -d /mnt/RECOVERVERZEICHNIS
Die recoverten Dateien werden wie gewohnt im RECOVERDIR/
Verzeichnis abgelegt. Im ersten Schritt werden jetzt dabei Dateien
analog den Optionen "-R" bzw "-r"
ausgehend vom Rootverzeichnis des zu untersuchten Filesystems aus
recovert. Die Dateien die aus dem Inodekopien gewonnen werden
können, habe weitestgehend ihre original Dateieigenschaften und
Rechte.
Nachdem dieser Schritt durchlaufen ist, schließen sich weitere Recoverstufen an. Dazu werden zusätzlich bei Bedarf noch 3 Verzeichnisse im RECOVERDIR/ angelegt, um die so wieder gewonnen Dateien aufzunehmen.
MAGIC-1 : dort befinden sich
Teile des Dateibaumes die durch fehlende Inodekopien von
Verzeichnissen nicht beim recovern des Verzeichnisbaumes gefunden
wurden.
MAGIC-2 :
dort befinden sich einzelne Dateien die durch fehlende Inodekopien
von Verzeichnissen nicht beim recover des Verzeichnisbaumes
gefunden wurden.
Neu ab Version 0.2.4 / 0.3.0-pv2 werden hier
auch eventuell gefundene Dateien recovert, von denen Inodecopien in
den Löchern des
Journals gefunden wurden. Von diesen Dateien ist die
Inodenummer nicht bekannt und damit auch kein Dateiname und auch
kein Löchzeitpunkt zu ermitteln. Doch diese Dateien sind gelöscht
und wurden von vorherigen Recoverstufen nicht recovert. Sie
bekommen von ext4magic automatisch beim Recover dann Inodenummern
größer als die maximale Inodeanzahl des Filesystems im Dateinamen
zugeordnet.
Die Dateieigenschaften in beiden Verzeichnissen
ist ähnlich der Dateien im Verzeichnisbaum, mit 2 Ausnahmen: Die
Dateinamen haben das Muster "<NR>", wobei
die NR die ursprüngliche InodeNummer darstellt. (
Vorsicht mit diesen Dateinamen, sie müssen auf der Konsole mittels
Quotierung angegeben werden. )
Da der Dateitype der Dateien
in diesem Verzeichnis nicht aus den Dateinamen hervor geht, sollte
man in diesem Verzeichnis zuerst immer einmal mit "file"
eine "Sichtinvertur" vornehmen, und anschließen die
interessanten Dateien umbenennen, bevor man sich den Inhalt der
Dateien mit einem Programm anzeigen lässt. In neueren Versionen
werden die Dateien hier entsprechend ihres wahrscheinliches
Inhaltes mit Fileextensionen versehen und in Verzeichnissen
vorsortiert abgelegt.
Der zweite Unterschied würde Hardlinks betreffen, diese können hier nicht mehr richtig aufgelöst werden, so das in dieser Recoverstufe auf die Wiederherstellung der Hardlinks komplett verzichtet wurde.
MAGIC-3 :
Hier befinden sich die Dateien die durch das Scannen der
Datenblöcke unter Zuhilfenahme von libmagic.so
gefunden wurden. Die Dateien dort haben als
Dateinamen eine Zahl und eventuell eine passende Extension. Die
Zahl ist die Anfangsblocknummer der Datei im original Filesystem.
Die Dateien werden in Unterverzeichnissen entsprechend des Typs
angelegt, den libmagic.so glaubt in den Daten erkannt zu haben und
ist größtenteils identisch der MIME-Typen
Einteilung. Die Qualität dieser Dateien kann nicht garantiert
werden. Es ist und bleibt immer auch ein bisschen Zufall, ob eine
Datei hier richtig erkannt und auch auf die richtige Dateilänge
zugeschnitten werden kann. Für ext3 und viele Dateitypen ist eine
einfache Spezifizierung entwickelt worden, so das ein Großteil
sehr häufiger Dateitypen mit guter Trefferquote richtig wieder
hergestellt werden können. Bei einigen Dateitypen sind
gegebenenfalls bei der Überprüfung der Dateien noch kleine
Korrekturen notwendig damit die recoverten Dateien einwandfrei
funktionieren. siehe
Tricks&Tipps
Hauptsächlich sollten sich unterhalb von MAGIC-3 Dateien befinden, die während des untersuchten Löschvorganges gelöscht wurden. Dazu wird versucht aus Kopien von Metadaten aus dem Journal die Informationen zu gewinnen, welche Datenbereiche beim Löschvorgang frei gegeben worden sind. In wie weit diese Vorauswahl wirklich funktionieren kann, ist abhängig vom Inhalt des Journals. Da es auch möglich und wahrscheinlich ist, dass sich von einigen Dateiabschnitten keinerlei Metadaten vor dem Löschzeitpunkt im Journal befinden, müssen dann solche Dateiabschnitte trotzdem komplett bearbeitet werden. Dabei werden dann dort auch mehr oder weniger viele Dateien gefunden und wieder hergestellt, die schon länger gelöscht sind. Erste Tests zeigen jedoch, ext4magic recovert wesentlich weniger solcher alten Dateien als andere gängige Recovertools.
Als Datenbasis für den
Scanner wird derzeit die default magic-Datenbasis
des file-Befehls verwendet.
Sollten sich hier zwischen den einzelnen Distributionen sehr große
störende Unterschiede ergeben, wird wohl ext4magic eine eigene
magic-Datendatei erhalten müssen. Die Tests in der derzeitigen
Entwicklungsphase zeigen zwar das mit einer speziellen
Magic-Konfiguration der eine oder andere Filesystemtype noch
zusätzlich erkannt werden könnte, es aber derzeit generell nicht
notwendig ist eine eigene Konfiguration speziell für ext4magic zu
pflegen.
Es hat sich jedoch herausgestellt: Versionen von
libmagic aus "file" kleiner V5.04 haben Speicherprobleme
die ext4magic zum Absturz bringen können. Zum stabilen Betrieb
muss darum file-5.04 oder neuer installiert werden. (derzeit ist
bis einschließlich Version file-5.06 getestet)
Die Geschwindigkeit mit der ein Filesystem
mittels der magischen Funktion recovert werden kann, ist von sehr
vielen Faktoren abhängig und kann nicht wirklich mit anderen
Recovertools verglichen oder gegenübergestellt werden. Es kann
sehr schnell gehen wenn sehr viele Dateien schon in den ersten
Stufen gefunden werden. Die letzte Stufe kann aber auch durchaus um
den Faktor 10 länger dauern, als andere Recovertools für einen
Recover des selben Filesystemes benötigen würden. Oft ist zu
beobachten, dass das Recover in Wellen abläuft. Eine Zeit lang
werden gar keine Dateien gefunden, (Hier bitte Geduld, das ist
okay) und anschließend werden dann massig Dateien innerhalb
kürzester Zeit gefunden. Dieses ist begründet im der Art und
Weise wie die Blöcke abgescannt werden. Intern werden
Datenbereiche bei Bedarf 2 mal gescannt, wobei jeweils nach anderen
Kriterien gesucht wird. Lange Laufzeiten entstehen vor allem, dann
wenn größere Datenbereiche nicht recovert werden können, dieses
können sehr viele oder einfach nur große nicht unterstützte
Dateiformate sein, längst gelöschter Dateischrott der mangels
passender Journaldaten nicht vom Recover ausgeschlossen werden
kann, Dateien die durch starke Fragmentierung nicht sauber erkannt
werden, aber auch größere Dateiabschnitte aus der Mitte oder dem
Ende von Dateien wenn der Dateianfang einfach nur sehr spät
während des scannens gefunden wird. Diese Funktion kann und wird
Dateien finden und richtig zusammensetzen die von anderen Tools
nicht gefunden werden, sie ist aber extrem rechenintensiv und damit
sehr langsam. Es kann das Ergebnis des Recovers während der
Laufzeit dieser Funktion schon untersucht und bearbeitet werden.
Brechen sie ext4magic ab, wenn es zu lange dauert oder die
wichtigen Dateien schon gefunden sind. Für ext4 wurden die
Funktionen erweitert und verbessert was auch bei ext4 spürbare
Geschwindigkeitsvorteile in dieser Funktion zu Folge hat. Geplant
ist die neu entwickelten Funktionen, welche derzeit nur auf ext4
funktionieren auch für ext3 anzuwenden. Voraussichtlich ab Version
0.4.x wird auch ext3 dann die verbesserten Funktionen mit einen
enormen Geschwindigkeitsgewinn benutzen.
Prinzipiell müssen die
Dateien von "file" erkannt werden, sonst können sie
nicht recovert werden. file versucht möglichst viele Dateitypen an
möglichst wenige Eigenschaften zu erkennen- und es liegt auch hin
und wieder mal daneben. ext4magic profitiert von diesen
Eigenschaften und kann damit sehr viele Dateientypen erkennen und
recovern, aber hat damit auch einige Probleme der
Fehlinterpretationen. Einige wenige sehr seltene und auch kaum
gebräuchliche einfache Dateitypen, welche zu sehr vielen
Fehlinterpretationen bei den Datenblöcken geführt habe, mussten
vom Recover ausgeschlossen werden. Ursache für die
Fehlinterpretation war meist, "file" versucht diese File
Typen an nur ein oder 2 Byte am Dateianfang zu erkennen. Bei der
Anwendung auf die rohen Datenblöcke des Filesystems gibt das dabei
dann zu viele falsche Treffer.
Es wird versucht mit
heuristischen Methoden aus den Datenblöcken wieder Dateien
zusammen zu bauen, dieses wird oft funktionieren, jedoch nicht in
jedem Fall immer zuverlässig. Andere Programme nutzen eventuell
auch noch genauere Methoden und prüfen Block für Block in dem sie
zB. den Datenstrom innerhalb der Datei und verfolgen oder
überprüfen. Ext4magic macht dieses bei einigen Dateitypen auch,
bei ext3 ist dieses nicht zwingend über die gesamte Dateilänge
hinweg erforderlich. Aber es sind nur wenige Dateitypen bei denen
dieses mit einem vertretbaren Aufwand zu programmieren ist. Dafür
wird bei ext4magic aber versucht auch solche Dateien zu recovern,
von denen überhaupt kein Algorithmus bekannt ist, mit dem jeder
einzelnen Datenblock innerhalb der Datei genau überprüft werden
könnte.
Des weiteren kann ext4magic zwar einiges was
fragmentiert auf der Platte liegt, wieder als Datei finden und
zusammenfügen. Jedoch sind kleinere Dateien mit starker
Fragmentierung oder Fragmentierung am Anfang der Datei mit
ext4magic auch nur bedingt wieder richtig herstellbar. Auch kann
nicht wirklich sicher verhindert werden, das sich durch
Fragmentierung nicht auch mal ein paar Datenblöcke von Dateien
mischen oder irgend ein reiner Datenblock zufällig als der Anfang
einer Datei interpretiert wird. Hier gibt es auch Unterschiede in
den einzelnen Dateitypen. Bei einigen Dateitypen ist es leichter
einen folgenden Datenblock einer bestimmten Datei 100%tig
zuzuordnen, bei anderen Dateitypen ist dieses weniger gut möglich.
Es wird also immer auch ein wenig Datenschrott im Ergebnis des
Magic-Scanners zu finden sein. Viele Dateitypen können am Ende
mehr oder weniger viele Nullen haben. Für einige der wichtigsten
und häufigsten Dateien konnte eine Funktion geschrieben werden,
die das beim Recover versucht zu korrigieren, aber längst nicht
für alle Dateitypen. Es ist also möglich das einige recoverte
Dateien nur deshalb nicht sauber zu öffnen sind, nur weil ihnen am
Ende eine oder zwei NULLen fehlen. Anderen Dateitypen wird mit
einer solchen Funktion eine bestimmte Anzahl von NUllen beim
Recover automatisch angehängt. Damit werden Dateien recovert, die
eventuell ab und zu auch mal ein paar Byte zu groß sind, sich aber
dennoch mit gebräuchlichen Programmen meist problemlos öffnen
lassen. siehe auch Tricks
& Tipps
Durch die zum Vergleich mit anderen Recovertools
vollkommen andere Arbeitsweise können auch einige Dateien gefunden
werden, welche mit anderen gebräuchlichen Tools derzeit nicht
wiederherstellbar sind oder die dort nur teilweise wieder
brauchbare Dateien ergeben. Eine 100%tige Ausbeute und eine 0%ige
Fehlerrate ist bei den Magic Funktionen von ext4magic nicht die
angestrebte Messlatte.
Ext4magic wird innerhalb der Magic-Funktion nur die Datenblöcke berücksichtigen von denen sich der Löschvorgang noch im Journal befindet. Bei einem heute typischen default Filesystem wird es beim löschen von geschätzt mehr als 400000 Dateien zu einem Überschreiben des Beginn des Löschvorganges kommen. Genauer erklärt ist das auf der Journalseite. In diesen Fällen ist es wahrscheinlich, dass die Dateien die zuerst gelöscht worden sind nicht gefunden werden.
Für seltene Spezialfälle wird ext4magic einige Optionen und Funktionen erhalten mit denen versucht werden kann, das Unmögliche eventuell doch noch in Reichweite zu bekommen. Diese Funktionsgruppe ist per default Einstellung nicht aktiv, und die Verfügbarkeit muss schon beim Kompilieren mittels
./configure --enable-expert-mode
aktiviert werden. Mit ihrer Hilfe soll die
Möglichkeit geschaffen werden den Funktionsumfang von ext4magic
auch bei bestimmten Beschädigungen an der Filesystemstruktur
anzuwenden und so auch mehr oder weniger viele Daten nach typischen
Filesystembeschädigungen noch retten zu können. Die ersten dieser
Funktionen sind mit Version 0.2.1 eingeführt worden, und erlauben
den Zugriff auf Filesysteme die am Anfang "moderat und
begrenzt beschädigt" sind. Ab Version 0.2.2 kann auch bei
katastrophalen Beschädigungen durch teilweises Überschreiben des
Filesystems noch Dateien aus dem defekten Filesystem heraus
recovert werden.
Otto der Normallinuxer wird mit einiger
Wahrscheinlichkeit solche Funktionen nie benötigen. Ein wenig
Hintergrundwissen und gezielte Hilfestellungen sind auf der
Expert-Mode Seite am Entstehen.
Häufig scheint bei Usern welche das erste mal ext4magic benutzen möchten das Problem aufzutreten, dass ext4magic scheinbar nur ein paar wenige Zeilen Ausgabe produziert und sich dann sofort wieder beendet ohne wirklich gearbeitet zu haben. Es gibt 2 mögliche Ursachen für dieses Verhalten:
Aus Sicherheitsgründen musste die Nutzung von ext4magic ohne Rootrechte unterbunden werden. Diese Abweisung erfolgt von ext4magic jedoch kommentarlos.
Die Defaulteinstellungen von ext4magic sind auf die letzten 24 Stunden vor dem Programmaufruf eingestellt. Liegt eine Löschung schon länger zurück und sie benutzen keine passenden Zeitoptionen, kann ext4magic nichts im Filesystem finden. (Siehe dazu auch Zeitoptionen)
Eine kleine Sammlung von Howtos und Erfahrungen mit ext4magic
Die originale Manpage wird zusammen mit dem Programm aus dem Quelltext heraus installiert. Sollte Bedarf bestehen diese Manpage zu lesen ohne sie zu installieren, die folgende beiden Kommandos bringen die Manpage von ext4magic aus dem Quellcode auf der Konsole zur Ausgabe.
nroff -man src/ext4magic.8
man -l src/ext4magic.8
Eine deutsche Version der Manpage von ext4magic im Wiki-Format befindet sich in dieser Dokumentation
HOWTO von Carlo Wood erklärt das Prinzip des Recovers mithilfe von Inodekopien aus dem Journal
extundelete erlaubt auch einfaches Recovern von gelöschten Dateien auf ext4 Filesystemen
Ext2/3/4 Filesystem Utilities die Standardtools und Librarys auf denen ext4magic aufgebaut
Linux Artikel erklärt das Problem beim Wiederherstellen gelöschter Dateien und die klassischen Methoden
Ext4magic: Inode - Directory - Journal - Installation - Zeit-Optionen - Tricks&Tipps - Manpage - Expert-Mode |