Wie funktioniert „rm“ auf einem NTFS-Dateisystem unterscheidet sich von Windows-eigene Implementierung?

16

Ich habe eine externe USB-Festplatte mit einem NTFS-Dateisystem darauf.

Wenn ich eine Datei aus Windows entfernen und ich führen eine von mehreren „Undelete“ Dienstprogramme (sagen wir, Testdisk) ich die Datei leicht wiederherstellen können (weil „es ist immer noch da, aber es ist als gelöscht markiert“).

Wenn ich die Datei von Linux entferne, kann kein Dienstprogramm (es sei denn, ich verwende ein signaturbasiertes Deep Search-Programm) die Datei wiederherstellen. Warum? Wie wird Unlink im NTFS-Dateisystemcode von Linux implementiert? Es sieht so aus, als würde es nicht nur "als gelöscht markieren", sondern auch die Struktur auf der Festplatte verwischen. Ist dies der Fall?


quelle
2
@Jay silly_evarlast Wren Du bist wahrscheinlich Recht, ich werde mit serverfault versuchen. Das System, mit dem ich dieses Verhalten getestet habe, ist ein Ubuntu. Dies könnte also mit Ubuntu zusammenhängen.
Sie könnten den Quellcode von ntfs-3g gehen und sehen , ob es etwas über Ihr Problem.
Martin Ueding
Vielleicht ist es auch möglich, die ntfs-3g-Entwickler zu fragen (sie wissen, wie NTFS funktioniert und wie sie es implementieren).
11.

Antworten:

7

Ich hatte einen Blick auf der ntfs3g Quelle aus Neugier.

In scheint eine Funktion ntfs_delete(...)definiert zu sein dir.c, die das Löschen übernimmt.

Es entfernt auf jeden Fall alle gelöschten Dateien / Ordner Metadaten aus dem Dateisystem-Strukturen.

Da es den Quellcode für Microsofts eigene Version nicht gibt, kann ich nur versuchen, eine fundierte Vermutung anzustellen, wie es das Löschen durchführt.

Offenbar markiert Microsoft den MFT-Eintrag nur als nicht verwendet, da die Dienstprogramme zum Wiederherstellen des Speicherorts und des Namens der gelöschten Datei in der Lage sind.

Jaka
quelle
3

Ich kenne die Besonderheiten von Windows und NTFS nicht, aber eine gebräuchliche Methode, um dies in den Unix / Linux-Dateimanager-GUIs und im Mac OS X Finder zu tun, besteht darin, die Datei nicht zu löschen, sondern in einen speziellen versteckten Ordner namens Trash (oder ähnlich). der Undelete Befehl ruft die Datei aus diesem Ordner Papierkorb.

rm entfernt einfach die Datei, ohne mit Trash-Ordner zu belästigen, wie vom Benutzer angefordert.

mouviciel
quelle
Danke, ich habe nach einer Erklärung für dieses Verhalten suchen!
jcora