Das ist im Prinzip das gleiche in grün. Ein Undelete schaut einfach, wo im Dateisystem Dateien mit einem Flag (sogenannter Schalter oder Markierung) "gelöscht" hinterlegt sind. Siehe meine Erklärung vorher. Es gibt irgendwo eine Indexdatei bzw. Datenbank mit den enthaltenen Datenblöcke für eine Datei. Beim Löschen wird in der Datenbank einfach nur ein Eintrag vorgenommen, daß nun alle verwendeten Blöcke freigegeben sind, damit sie wieder überschrieben werden können. Damit sieht dann das Betriebssystem diese Bereiche im Dateisystem als nicht belegt oder frei an, und diese Bereiche sind dann wieder für das Schreiben freigegeben.
Ein Datenrettungstool umfaßt alles, da ist ein undelete gleich mit dabei. Wie gesagt, es wird einfach blank bitweise oder blockweise das Filesystem komplett abgesucht, und geschaut, wo es zusammenhängende Datenblöcke gibt, was eine Datei oder Ordner ausmacht. Diese werden dann in einer eigenen Datenbank gesammelt und aufgelistet. Nochmals, das heißt erstmal nur, daß was gefunden wurde.
Sobald der Befehl bzw. Anweisung kommt, Datei erstellen, wird dann die Kette der Blöcke in dem Dateisystem einfach durchgegangen, in dem Dateisystem gelesen und verknüpft. Erst dann sieht man, ob eine Dateirettung erfolgreich wird.