Quando escrevo dados aleatórios no disco com a ferramenta dd, posso acessar os dados antigos novamente. Para testá-lo, primeiro adicionei um arquivo "text.txt" ao disco e escrevi "isto é texto" nele. Meu disco está montado no diretório /mnt/backup.
$ cat /mnt/backup/text.txt
this is text
$
O eu usei 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
$
Se tento listar o conteúdo do disco, não obtenho resultados, mas quando digito o nome completo do arquivo, posso imprimir o conteúdo do arquivo.
$ ls -l /mnt/backup/
total 0
$ cat /mnt/backup/text.txt
this is text
Por que isso está acontecendo ? O que eu esperava era que os dados existentes também fossem substituídos. Se eu souber o nome completo do arquivo, ainda posso acessar os dados. Qual é o ponto que eu perdi?
Os dados provavelmente foram sobrescritos, mas alguns deles ainda estão armazenados em cache na memória.
Quando você escreve diretamente no dispositivo assim, ele ignora o mecanismo de cache do sistema de arquivos linux e vai diretamente para o dispositivo. O que está em cache no momento não é afetado pelo menos temporariamente. Se o sistema de arquivos ainda estiver montado, o sistema operacional pode até gravar algumas páginas sujas de volta no disco depois de limpá-lo com dd.
No entanto, o linux pode eventualmente perceber que o sistema de arquivos está corrompido, e isso pode causar um pânico no kernel.
Para melhores resultados, os sistemas de arquivos devem ser desmontados antes de você começar a rabiscar diretamente no dispositivo.