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 que 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 eu tentar listar o conteúdo do disco, não obtenho nenhum resultado, 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 poderei acessar os dados. Qual é o ponto que perdi?
Responder1
Os dados provavelmente foram sobrescritos, mas alguns deles ainda estão armazenados em cache na memória.
Quando você escreve diretamente no dispositivo dessa forma, ele ignora o mecanismo de cache do sistema de arquivos Linux e vai diretamente para o dispositivo. O que está no 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 o dd.
No entanto, o Linux pode eventualmente perceber que o sistema de arquivos está corrompido e isso pode causar pânico no kernel.
Para obter melhores resultados, os sistemas de arquivos devem ser desmontados antes de começar a rabiscar diretamente no dispositivo.