¿En qué se diferencia "rm" en un sistema de archivos NTFS de la propia implementación de Windows?

16

Tengo un disco USB externo con un sistema de archivos NTFS.

Si elimino un archivo de Windows y ejecuto una de las varias utilidades "recuperar" (por ejemplo, TestDisk), puedo recuperar fácilmente el archivo (porque "todavía está allí pero está marcado como eliminado").

Si elimino el archivo de Linux, ninguna utilidad (a menos que use uno basado en firmas de búsqueda profunda) puede recuperar el archivo. ¿Por qué? ¿Cómo se implementa unlink en el código del sistema de archivos NTFS de Linux? Parece que no solo "lo marca como eliminado" sino que borra parte de la estructura del disco, ¿es este el caso?


fuente
2
@ Jay silly_evarlast Wren Probablemente tengas razón, lo intentaré con serverfault. El sistema que utilicé para probar este comportamiento es un ubuntu, por lo que podría estar relacionado con ubuntu.
Puede revisar el código fuente de ntfs-3g y ver si hay algo sobre su problema.
Martin Ueding
Quizás también sea posible preguntar a los desarrolladores de ntfs-3g (ellos saben cómo funciona NTFS y cómo lo implementan).
JanC

Respuestas:

7

Eché un vistazo a la fuente ntfs3g por curiosidad.

Parece que hay una función ntfs_delete(...)definida en dir.c, que hace la eliminación.

Definitivamente elimina todos los metadatos del archivo / directorio eliminado de las estructuras del sistema de archivos.

Dado que el código fuente de la propia versión de Microsoft no está disponible, solo puedo tratar de adivinar cómo realiza la eliminación.

Parece que Microsoft solo marca la entrada MFT como no utilizada, ya que las utilidades de recuperación pueden recuperar la ubicación y el nombre del archivo eliminado.

Jaka
fuente
3

No conozco las especificidades de Windows y NTFS, pero una forma común de hacerlo en las interfaces gráficas de usuario de Unix / Linux y Mac OS X Finder es no eliminar el archivo sino moverlo a una carpeta oculta especial llamada Papelera (o similar). el comando undelete recupera el archivo de esa carpeta Papelera.

rm simplemente elimina el archivo sin molestarse con las carpetas Papelera, según lo solicitado por el usuario.

Mouviciel
fuente
¡Gracias, he estado buscando una explicación de ese comportamiento!
jcora