¿Por qué dd no sobrescribe los datos existentes?

¿Por qué dd no sobrescribe los datos existentes?

Cuando escribo datos aleatorios en el disco con la herramienta dd, puedo acceder a los datos antiguos nuevamente. Para probarlo, primero agregué un archivo "text.txt" al disco y escribí "esto es texto" en él. Mi disco está montado en el directorio /mnt/backup.

$ cat /mnt/backup/text.txt
this is text
$

Yo usé dd:

$ dd if=/dev/urandom of=/dev/sdb1 #this is the disk mounted to the /mnt/backup directory
1025+0 records in
1024+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 14,4948 s, 74,1 MB/s
$

Si intento enumerar el contenido del disco, no obtengo resultados, pero cuando escribo el nombre completo del archivo, puedo imprimir el contenido del archivo.

$ ls -l /mnt/backup/
total 0
$ cat /mnt/backup/text.txt
this is text

Por qué está pasando esto ? Lo que esperaba era que los datos existentes también se sobrescribieran. Si conozco el nombre completo del archivo, aún puedo acceder a los datos. ¿Cuál es el punto que me perdí?

Respuesta1

Es probable que los datos se sobrescriban, pero algunos de ellos todavía están almacenados en la memoria caché.

Cuando escribe directamente en el dispositivo de esta manera, omite el mecanismo de almacenamiento en caché del sistema de archivos de Linux y va directamente al dispositivo. Lo que está en caché en ese momento no se ve afectado, al menos temporalmente. Si el sistema de archivos todavía está montado, el sistema operativo puede incluso escribir algunas páginas sucias en el disco después de haberlo limpiado con dd.

Sin embargo, Linux puede eventualmente notar que el sistema de archivos está dañado y esto podría causar un pánico en el kernel.

Para obtener mejores resultados, los sistemas de archivos deben desmontarse antes de comenzar a escribir directamente en el dispositivo.

información relacionada