Eu tenho um disco rígido montado em USB com7GBde espaço livre que tentei preencher com dados pseudo-aleatórios usando estes comandos:
$ cd /media/username/volume_name
$ sudo dd if=/dev/urandom of=random_data_file.txt
random_data_file.txt
anteriormente não existia. Eu esperava que o comando criasse o arquivo, escrevesse dados pseudo-aleatórios nele e parasse quando a partição que o continha ficasse cheia. A barra de status do gerenciador de arquivos eventualmente exibiu 0 bytes
espaço livre. Mas o dd
comando não parou e nem o emulador de terminal nem o gerenciador de arquivos apresentaram qualquer notificação de que a unidade estava cheia. Depois que terminei o comando com Ctrl+C
, a saída do terminal declarou40 GBtem sido escrito. Selecionei o arquivo no gerenciador, cuja barra de status também exibia seu tamanho como40 GB, que é 33 GB a mais que a quantidade anterior de espaço livre.
- Existe alguma chance de este comando ter substituído ou modificado alguns dos meus outros arquivos, a partição ou outras partições? Ou isso significa que
random_data_file.txt
foi gravado e substituído 40 GB/7 GB = 5,7 vezes? Neste último caso, por que o gerenciador de arquivos exibiu seu tamanho superior a 7 GB? Após a exclusãorandom_data_file.txt
usando o gerenciador de arquivos, sua barra de status volta a exibir o espaço livre como 7 GB. - Qual é a maneira correta de usar o
dd
comando para criar e gravar dados pseudo-aleatórios em um arquivo de saída até que a partição que o contém esteja cheia, sem sobrescrever nada (além do espaço livre na mesma partição), incluindo o arquivo de saída?
Responder1
Supondo que o hardware do seu disco seja bom (e não um cartão SD fraudulento mostrando espaço disponível falso) e que seu sistema de arquivos não esteja corrompido com freelists corrompidas e arquivos cujos blocos ainda estão na freelist, então dd if=/dev/urandom of=random_data_file.txt
não corromperia o disco nem sobrescreveria nada (outros do que random_datafile.txt).
Provavelmente você não precisava do sudo na frente e se não tiver certeza de que seu comando dd está correto, certamente não deveria executá-lo como sudo.
Uma possível razão pela qual ele gravou mais dados do que o esperado é que a maioria dos sistemas de arquivos reserva um pouco de espaço livre (normalmente 5%) para que o root possa continuar gravando quando usuários regulares virem o disco cheio. (Novamente, não faça isso com sudo...)