En general , la asignación de bloques es la operación más costosa en los sistemas de archivos, por lo que los sistemas de archivos intentarán evitarla, en particular reutilizando los bloques cuando sea posible. Esto significaría lo siguiente:
-
Al sobrescribir un archivo existente, se reutilizan los mismos bloques. Los nuevos bloques se asignan cuando los datos del nuevo archivo superan los de los archivos sobrescritos.
-
Al truncar un archivo existente, todos los bloques se liberan, por lo que potencialmente son reutilizables para otras operaciones de archivo. En ese caso, el nuevo archivo puede asignar nuevos bloques. No hay garantía de que el contenido del nuevo archivo reasigne los mismos bloques y, en particular, los bloques antiguos podrían haberse reasignado a otros archivos mientras tanto.
Sin embargo , depende mucho de las funciones internas del sistema de archivos. Logistemas de archivos estructurados realizan todas las escrituras de forma secuencial, a lo largo de toda la partición, por lo que está prácticamente garantizado, con tal sistema de archivos, que el nuevo archivo no sobrescribirá los bloques del archivo anterior. Journaling filesystems puede copiar el contenido del archivo en una estructura adicional (la "revista") además del almacenamiento permanente real (según sobre si el registro en diario se extiende al contenido del archivo, o solo a los metadatos). Algunos sistemas de archivos también usan un "árbol de fases" que se puede ver como un sistema de archivos estructurado por registro, con un árbol en lugar de una lista; para estos, los sobrescritos pueden o no suceder.
Un punto importante a considerar es que las estrategias de asignación de bloques no dependen solo del sistema de archivos , sino también de la implementación . No hay garantía de que Windows XP y Windows 7, por ejemplo, se comporten de manera similar en el mismo sistema de archivos NTFS. Una versión de SO puede valer la pena mantener los bloques antiguos para "acelerar (re) la asignación", mientras que otra podría emplear otra estrategia. Esto es todo heurística, sintonizado y ajustado. Por lo tanto, uno no puede realmente responder a su pregunta sobre "NTFS"; uno tendría que hablar sobre "NTFS implementado en OS foobar, versión 42.17, compilación 3891".
Además , todos estos bloques son lo que ve el sistema operativo; en realidad el almacenamiento físico puede diferir, y mover / copiar datos alrededor. Esto es típico de los algoritmos de nivelación de desgaste en SSD. En términos generales, la sobrescritura / destrucción de archivos en SSD no es confiable (consulte esta respuesta para obtener detalles y sugerencias). Pero algunos movimientos de datos también pueden ocurrir con los discos magnéticos (en particular cuando se detecta un sector escamoso; la reasignación se realiza sobre la marcha, y el sector antiguo permanece intacto, para siempre).
Esto básicamente significa que la destrucción de archivos no funciona bien , ya que no puede garantizar que los datos serán destruidos. Debe utilizar la eliminación de archivos solo como medida de emergencia cuando otros métodos hayan fallado o no se hayan aplicado por error. Las formas correctas para destruir permanentemente un archivo son:
- Destrucción total del disco completo, por ejemplo, disolviéndolo en ácido.
-
Encriptación : cuando los datos están encriptados, destruir la clave es suficiente para que los datos no puedan recuperarse. Si bien esto no resuelve completamente el problema (todavía tienes que destruir un elemento de datos), lo hace mucho más fácil (una clave es pequeña: es mucho más fácil destruir 128 bits que destruir 128 gigabytes ).
Borrado seguro , cuando se implementa correctamente en el disco, funciona con el Truco de cifrado.