Wenn Editoren Dateien speichern, löschen oder kürzen sie normalerweise auf 0, wodurch zugewiesener Speicherplatz freigegeben wird, und schreiben dann, wodurch neuer Speicherplatz zugewiesen wird. Dies führt dazu, dass das Dateisystem die Daten an einem völlig anderen physikalischen Ort ablegt. Ihre Idee könnte also nicht funktionieren.
Sie können den physischen Speicherort einer Datei mit filefrag
oder hdparm --fibmap
abrufen und dann verwenden dd
, um diesen physischen Speicherort direkt zu lesen. Ich habe diesen Prozess hier in einem anderen Kontext beschrieben: /unix//a/85880/30851
In Ihrem Fall ist es wahrscheinlicher, dass Sie den allgemeinen Ansatz zum Auffinden von Textdaten benötigen ... so etwas wie:
strings -n 12 -t d /dev/partition | grep -F 'text snippet'
strings
sucht nach aufeinanderfolgenden ASCII-Daten (unterstützt auch einige andere Codierungen, nicht sicher in Bezug auf UTF-8. Wenn es sich um Code oder Englisch handelt, wird es nicht benötigt) und druckt auch den Offset, an dem es gefunden wurde.
text snippet
sollte ein genaues, eindeutiges Textbeispiel sein, an das Sie sich erinnern, dass es sich in dem Teil der Datei befindet, nach dem Sie suchen [in einer einzigen Zeile]. (Wenn Sie es nicht genau wissen, können Sie stattdessen reguläre Ausdrücke verwenden.)
-n 12
ist die Mindestlänge, strings
nach der gesucht wird. 12
sollte die Länge deines sein text snippet
. Dieser Parameter ist optional, sofern dies möglich ist strings | grep
.
Das Lesen der gesamten Partition dd
dauert sehr lange. Wenn dies jedoch erfolgreich ist, können Sie einen Offset angeben , um den allgemeinen Bereich zu erfassen und dann nicht zugehörige Elemente zu entfernen.
Ich habe seitdem nichts mehr in diesem Verzeichnis gemacht
Wenn Ihr Verzeichnis kein Einhängepunkt ist ... reservieren die meisten Dateisysteme nicht wirklich Speicherplatz "pro Verzeichnis", so ... dass alle Schreibvorgänge im gesamten Dateisystem möglicherweise das gesuchte Bit überschreiben. In einer Datenwiederherstellungssituation schalten Sie normalerweise das gesamte Objekt in den Nur-Lese-Modus.
strings
werden nur einige Teile der Datei gefunden, es sei denn, Sie haben großes Glück.