Tengo entendido que los 'archivos' son efectivamente solo punteros a la ubicación de memoria correspondiente al contenido de los archivos.
Tenga cuidado con su terminología. Los archivos (y punteros) están en el disco, no en la memoria (RAM).
Si 'rma' un archivo, ciertamente debe estar eliminando ese puntero.
Sí. Lo que sucede depende en gran medida del sistema de archivos. Algunos tienen un mapa de bits de qué bloque están libres/ocupados. Entonces tendría que voltear el bit por cada bloque liberado. Otros sistemas de archivos utilizan métodos más sofisticados para rastrear el espacio libre.
lo que sugiere que en realidad no se está sobrescribiendo nada...
Correcto. Puede encontrar varias utilidades de "recuperación". Pero dependiendo del sistema de archivos, puede volverse bastante complejo. Pero las cosas que guardó hace años aún podrían estar ahí, o podrían sobrescribirse. Todo depende de detalles minuciosos. Por ejemplo, consulte e2fsprogs.
Entonces, ¿borrar el puntero a una dirección de memoria es lo único que hace rm?
Bueno, también tiene que eliminar la "entrada de directorio" que proporciona metadatos sobre el archivo. (A veces simplemente borra el primer byte del nombre del archivo).
¿Siguen estando los datos en un bloque contiguo como antes?
Sí, los datos siguen ahí. Pero no asuma que es un bloque contiguo. Los archivos se pueden fragmentar por todo el disco, con muchos indicadores que le indican cómo volver a ensamblarlos. Y si usa RAID, las cosas se vuelven realmente complejas.
Sí. rm
simplemente elimina el puntero. Si tiene varios punteros al archivo (enlaces duros), elimine uno de esos punteros con rm
deja a los demás completamente intactos y los datos aún están disponibles.
La eliminación de todos esos enlaces aún no toca los datos, sin embargo, el sistema operativo ahora puede reutilizar los bloques que anteriormente estaban reservados para almacenar esos datos.
Vale la pena señalar que cualquier proceso que abre un archivo crea un identificador de archivo para él. Esto se suma al recuento total de referencias al archivo. Si elimina todos los punteros de su sistema de archivos, pero el sistema operativo aún tiene un proceso ejecutándose con un identificador de archivo abierto para su archivo, entonces el recuento de punteros no será cero y el archivo realmente no se eliminará. Solo cuando se cierre ese puntero final, el sistema de archivos registrará que se ha liberado el espacio en disco, y solo en ese momento el sistema operativo podrá sobrescribir los bloques previamente reservados para almacenar esos datos.
Es posible que pueda o no recuperar esos datos en cualquier momento en el futuro dependiendo de si se ha producido alguna reutilización de los bloques en cuestión.
Por cierto, no tienes ninguna garantía de que tus datos estén en un bloque contiguo en primer lugar.