En quoi «rm» sur un système de fichiers NTFS diffère de la propre implémentation de Windows?

16

J'ai un disque USB externe avec un système de fichiers NTFS dessus.

Si je supprime un fichier de Windows et que j'exécute l'un des nombreux utilitaires de "suppression" (par exemple, TestDisk), je peux facilement récupérer le fichier (car "il est toujours là mais il est marqué comme supprimé").

Si je supprime le fichier de Linux, aucun utilitaire (sauf si j'utilise un fichier basé sur une signature de recherche approfondie) ne peut pas récupérer le fichier. Pourquoi? Comment la dissociation est-elle implémentée dans le code du système de fichiers NTFS de Linux? Il semble qu'il ne se contente pas de "le marquer comme supprimé" mais qu'il efface une certaine structure sur le disque, est-ce le cas?


la source
2
@Jay silly_evarlast Wren Vous avez probablement raison, je vais essayer avec serverfault. Le système que j'ai utilisé pour tester ce comportement est un ubuntu, donc cela pourrait être lié à ubuntu.
Vous pouvez parcourir le code source de ntfs-3g et voir s'il y a quelque chose à propos de votre problème.
Martin Ueding
Peut-être que demander aux développeurs ntfs-3g est également une possibilité (ils savent comment NTFS fonctionne et comment ils l'implémentent).
JanC

Réponses:

7

J'ai jeté un œil à la source ntfs3g par curiosité.

Il semble y avoir une fonction ntfs_delete(...)définie dans dir.c, qui effectue la suppression.

Il supprime définitivement toutes les métadonnées du fichier / répertoire supprimé des structures du système de fichiers.

Étant donné que le code source de la propre version de Microsoft n'est pas disponible, je ne peux qu'essayer de faire une supposition éclairée sur la façon dont il supprime.

Il semble que Microsoft ne marque l'entrée MFT que comme inutilisée, car les utilitaires de suppression sont capables de récupérer l'emplacement et le nom du fichier supprimé.

Jaka
la source
3

Je ne connais pas les spécificités de Windows et NTFS, mais une façon courante de le faire sur les interfaces graphiques du gestionnaire de fichiers Unix / Linux et Mac OS X Finder est de ne pas réellement supprimer le fichier mais de le déplacer vers un dossier caché spécial nommé Corbeille (ou similaire). la commande undelete récupère le fichier de ce dossier Corbeille.

rm supprime simplement le fichier sans se soucier des dossiers de la corbeille, comme demandé par l'utilisateur.

mouviciel
la source
Merci, je cherchais une explication de ce comportement!
jcora