Ich habe das vor ein paar Jahren gemacht. Mein Ansatz war es, keine Zeit zu verlieren, die Partition aufzuheben und dann
dd if=/dev/hda1 of=backup_image.ext3
eine Sicherungsdatei mit dem genauen Status der Partition. Dann können Sie die Partition erneut einbinden und wie gewohnt weiterarbeiten, während Sie nach der gelöschten Datei in Ihrem erstellten Image suchen. Das Bild wird wahrscheinlich SEHR groß sein, da Sie den gesamten "leeren" Speicherplatz benötigen. Daher kann es ein praktisches Problem sein, das Bild zu speichern.
Dann waren es nur langweilige Suchen nach Textausschnitten, von denen ich erwartet hatte, dass sie sich irgendwo in der Suppe des Partitionsinhalts befinden. Um zB .tex-Dateien zu finden, lief ich
grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles
Dabei wurde ein großer Kontext um den Ausdruck "Unterabschnitt" gedruckt und die Ausgabe in einer Datei gespeichert, um sie manuell zu durchsuchen. Ich habe einen so großen Kontext gedruckt, da das Suchen so lange dauerte, dass ich es lieber nicht öfter als nötig machen würde.
Der Befehl strings
war auch hilfreich beim Entfernen von Binärmüll aus der Ausgabe, aber wenn ich mich richtig erinnere, wurden auch alle Zeilenumbrüche entfernt, was ein Problem darstellen könnte.
Um Binärdateien auf die gleiche Art und Weise zu finden, könnte es gelingen, einen charakteristischen Header oder etwas von einer bestimmten Datei zu finden, aber ich stelle mir vor, dass dies ein ziemlich großes Abenteuer ist.
Kurze technische Anmerkungen: Es gibt technische Probleme bei der Festplattenwiederherstellung und bei Ext3 / 4. Es ist eine lange Sache, aber kurz (und unzureichend) zu erklären: Ext3 / 4 entfernt die "Markierungen", die dem Betriebssystem mitteilen, wo sich Dateien auf der Festplatte befinden, wenn Sie sie löschen. Die Dateien werden nicht gelöscht, aber niemand weiß, wo auf der Festplatte sie beginnen und enden, und manchmal sind sie sogar an mehreren Stellen fragmentiert. Einige andere Dateisysteme setzen den Status der Dateien auf "Gelöscht", behalten jedoch die Standortdaten bei. Undelete ist dann nicht schwieriger als Dateizeiger mit diesem Flag zu betrachten (sie sollten noch verfügbar sein, wenn nicht zu viele Aktivitäten stattgefunden haben) und hoffen, dass der Inhalt nicht überschrieben wurde.
Was ist das beste? Aus meiner Sicht rhetorisch. Häufige Backups sind die Antwort auf all diese Probleme. Wichtige Daten ohne ein automatisiertes Backup-System sind laut IMHO ein zufälliger Unfall.
Obligatorische persönliche Anekdote: Ich wollte entfernen foo\ foo*
aus ~
. Ich hab geschrieben
rm -r foo<Tab>*
, was leider, da foo
anscheinend ein Symlink war und die einzige dazu passende Datei war, die Shell gemacht
rm -r foo\ foo *
Ich drückte die Eingabetaste und saß da und schaute auf den Befehl, der höchstens eine Sekunde hätte dauern sollen. Nach einiger Zeit rm
fragte ich mich, ob ich "die schreibgeschützte Datei etwas entfernen" wollte. Ziemlich schnell spürte ich die Schüttelfrost und leise und sehr kontrolliert drückte ich Ctrl+c
. ~ Die Hälfte von mir ~
wurde gelöscht, aber es gelang mir, alles durch das oben beschriebene Grepping und einige mehr oder weniger aktuelle Sicherungen wiederherzustellen. Ich hatte einige sehr wertvolle (gelesen: zeitraubende) und sehr kürzlich gemessene Messdaten auf der Festplatte, die verloren gingen, aber ich hatte vierfache Sicherungen gemacht. Eines verschwand hier, ein anderes wegen eines Systemausfalls in der Schule, ein anderes war korrupt, und ich konnte das vierte nicht finden, da ich es aus Versehen in den falschen Ordner gelegt hatte :-D. Hatte nichtrm -r
blieb eine schreibgeschützte Datei hängen, die vierte wäre gegessen worden, seit dieser Ordner über sshfs in meinem eingebunden wurde ~
. Ich bin seit dem sehr viel vorsichtiger.