PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gelöschte Dateien retten auf nicht verschl. FS



msi
19.02.03, 16:29
Hallo zusammen,

<History>
Grad hab ich eine sehr umfangreiche Datei aus einem Project gelöscht (fs: reiserfs)..
Nach ein wenig Suche bin ich auf eine Methode gestoßen, die Dateien wiederherzustellen, und ich muss sagen, die is genial :D :D
</History>

einfach
grep -a -Bzeilendavor -Azeilendanach "einwenigtextderdate" /dev/hdx

zeilendavor meint die Anzahl der Zeilen die vor dem Suchwort in dre Datei vorkamen (ungefährer Wert reicht natürlich, da man ja von oben das nicht stimmende Wegschneiden kann)

zeilendanach natürlich die Anzahl der Zeilen die nach "einweinigtextderdatei" kommen.

einwenigtextderdatei durch ein paar Worten der gelöschten Datei ersetzten.

/dev/hdx soll die Partition sein, auf der die Datei gelöscht wurde (bsp: /dev/hda1)

in der Ausgabe wird sich dann die gelöschte Datei befinden, die einfach in eine neue Datei kopieren. Und die Wiederherstellung is fertig.

vielleicht hilft es einem, der wie ich so blöd war und kein backup erstellt hat.
Markus


Noch ein Hinweis:
Wenn ihr gerade eine wichtige Datei gelöscht habt, die betroffene Partition sofort ro mounten oder komplett umounten, damit der Kernel nicht irgendwas überschreibt.

mount -r -t ext2 /dev/hdaX /mnt/ -o remount=ro

Aef
20.02.03, 22:25
warum kann man auf einem journal filesystem eigentlich keine dateien mittels debugfs und lsdel wiederherstellen?
ich hab neulich nämlich auch aus versehen ein paar dateien gelöscht und wollte die wieder herstellen...
bis ich entdeckt hab, dass das auf jounaled filsystemen gar nicht geht...
Aef

FIREwaLKER
22.02.03, 10:22
Hi,

funktioniert diese Methode auch bei EXT3 Filesystemen?

msi
22.02.03, 13:44
Original geschrieben von FIREwaLKER
Hi,

funktioniert diese Methode auch bei EXT3 Filesystemen?

ich denke schon, habs allerdings nur bei einem reiserfs ausprobiert.
Test es doch einfach, du musst dazu ja keine Datei löschen, einfach nach dem Inhalt
einer existierenden Datei suchen, wenn du so auf sie stößt geht es auch nachdem sie gelöscht wurde.

bernie
22.02.03, 13:49
Hi,

das funktioniert genau so lange bis eine Datei mal fragmentiwet ist. Es müsste mit jedem Dateisystem gehen, ausser mit fragmentierten und verschlüsselten.

Ciao, Bernie

nobody0
22.05.03, 10:34
Übrigens funktioniert es auch bei verschlüsselten Partitionen!
Man muss dann statt /dev/hdXx bzw. sdXx einfach /dev/loopX nehmen, wo die Partition drüber läuft.

Ich habe es mal mit

dd if=/dev/loop0 of=tmp.tst

kurz probiert und da finde ich viel lesbares.

Ohne Mounten hat man aber garantiert keine Chance.

msi
22.05.03, 20:17
nein du musst es nicht einmal mounten, es reicht wenn du mit losetup die partition entschlüsselst und auf /dev/loopX legst, dann einfach statt /dev/hdX /dev/loopX durchsuchen, da dort ja der Klartext der Partition ist.

nobody0
22.05.03, 20:33
Original geschrieben von msi
nein du musst sich nicht einmal mounten, es reicht wenn du mit losetup die partition entschlüsselst und auf /dev/loopX legst, dann einfach statt /dev/hdX /dev/loopX durchsuchen, da dort ja der Klartext der Partition ist.

Ok, das habe ich nicht getestet, aber das Passwort sollte man in jedem Fall benötigen.

Da fällt mir gerade etwas ein: Ich hatte mal eine beschädigte verschlüsselte Reiserfs-Partition, die nicht repariert werden konnte, weil sie dazu ungemountet werden musste, sie aber dann verschlüsselt und nicht reparierbar war. Mit Entschlüsseln nur über losetup sollte das ja kein Problem sein. Aber wie sieht der konkrete Befehl dafür aus (f. Entschl. m. losetup)? :confused:

msi
22.05.03, 20:52
wenn du eine verschlüsselte platte mountest, wird sie davor mit losetup auf /dev/loopX unverschlüsselt gelegt (d.h. wenn du auf /dev/loopX schreibst wird das an den Kernel Prozess weitergegeben und der verschlüsselt das dann und schreibt das auch /dev/hdX, wenn du was lesen willst, geht das auch wieder an den KernelProzess der von /dev/hdX die daten liest, entschlüsselt und dann bei /dev/loopX anbietet.
Um loopX herzurichten musst du es mit losetup einrichten:
losetup -e AES128 /dev/loop0 /dev/hda7 (AES128 durch den entspr. Algorithmus ersetzen)
du wirst dann zur Eingabe das Passworts aufgefordert.

und dann kannst du /dev/loop0 reparieren mit z.B. fsck bzw. auf /dev/loop0 mit dem oben beschr. Befehl durchsuchen.

LX-Ben
04.06.03, 16:50
http://www.knebler.de/TIPS-Linux/Tip55-Geloeschte_Dateien_wieder_herstellen.php3
beschreibt nachfolgend eine andere Lösung. Wahrscheinlich dürfte eine aktuelle Version
von recover auch reiserfs unterstützen:

Gelöschte Dateien wieder herstellen

Das kann einem trotz vielfacher Backups passieren: Ein falscher Befehl, und
plötzlich ist eine wichtige Datei weg. Statt die Arbeit nochmal zu machen,
möchte man lieber die Datei wieder herstellen. Doch geht das überhaupt?Es
geht. Solange die Datei noch nicht von anderen Daten überschrieben worden
ist, kann sie mit etwas Glück vollständig wieder hergestellt werden. Je mehr
freier Platz auf der betroffenen Partition vorhanden ist, desto größer sind die
Chancen, daß es klappt.Dazu benötigt man das Programm recover. Man sollte
es bereits installiert haben, bevor der Schadensfall eintritt - also jetzt gleich ;-)
Ein simples "make; make install" erledigt das.Zunächst sollte man verhindern,
daß die gelöschte Datei von anderen Daten überschrieben werden kann. Dazu
fährt man das System in Runlevel 1 herunter:init 1Wer das Risiko liebt, kann
auch darauf verzichten ;-) Anschließend killt man noch alle Daemonen wie syslod
und klogd, um die Risiken zu minimieren. Nach der Rettungsaktion kann man
wieder in den gewohnten Runlevel hochfahren. Vor dem Start von recover sollte
man die kurze Manpage durchlesen. In der Regel muß man recover als root
starten, da nur root, aber niemals ein normaler Benutzer, auf die
Festplatten-Devices Zugriff haben sollte. Es wäre auch ein großer Fehler,
recover als suid root zu installieren, da dann jeder Benutzer die gelöschten
Dateien von anderen Benutzern lesen könnte.Nach dem Aufruf von recover will
das Programm zuerst die Partition wissen, auf der die gelöschte Datei liegt, und
bietet eine Auswahl der vorhandenen Partitionen an. Das Programm funktioniert
nur mit ext2-Partitionen; lag die Datei auf einer ReiserFS-Partition, ist nichts
mehr zu retten. Nachdem recover die Partition durchforstet hat, was bei einer
großen Partition einige Minuten dauern kann, fragt es nach einigen Dingen, um
die Auswahl einzugrenzen. Hier kann man, wenn man nichts Genaues weiß,
recht allgemein antworten, es funktioniert trotzdem ;-)Kurz darauf meldet sich
recover mit "n inodes found" und will ein Verzeichnis wissen, in dem sie
abgelegt werden sollen. Hier sollte man auf keinen Fall das aktuelle Verzeichnis
angeben. Das führt dazu, daß das Programm in einer ewigen Schleife
steckenbleibt. Man sollte auch kein Verzeichnis wählen, das auf der gleichen
Partition wie die gelöschte Datei liegt, sonst könnte das Resultat der Arbeit im
letzten Moment noch zunichte gemacht werden. Am besten legt man ein leeres
Verzeichnis auf einer anderen Partition an, in dem nur root Schreibrechte hat.
Dann kann man noch einen Text eingeben, der in der gelöschten Datei
vorkommen muß. Je besser man die Dateiauswahl hier oder beiden
vorhergehenden Fragen eingrenzen kann, desto schneller und einfacher geht
das Wiederherstellen.In dem angegebenen Verzeichnis werden sind nun
Dateien vorhanden, deren Name mit "dump" beginnt. Nun muß man diese nur
noch der Reihe nach durchsehen, die richtige Datei umbenennen/kopieren und
den Rest wieder löschen. Es gibt keine Garantie, daß die wieder hergestellte
Datei unbeschädigt ist, aber die Wahrscheinlichkeit ist hoch.