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?
Antworten:
Ich hatte einen Blick auf der ntfs3g Quelle aus Neugier.
In scheint eine Funktion
ntfs_delete(...)
definiert zu seindir.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.
quelle
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.quelle