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?
Respuestas:
Eché un vistazo a la fuente ntfs3g por curiosidad.
Parece que hay una función
ntfs_delete(...)
definida endir.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.
fuente
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.fuente