Limpando o disco rígido portátil com o DD no Linux [duplicado]

1

Eu tenho três discos rígidos portáteis, um com 160 GB e os outros dois com 500 GB. Eu quero escrever zeros para eles usando o Linux e dd . Eu encontrei este comando:

dd if=/dev/zero of=/dev/sda bs=?

Como é o tamanho do bloco, qual é o tamanho de bloco ideal para meus 3 discos rígidos portáteis? (Nota: coloquei o ? no final do comando.)

    
por Charles Whitfield 23.09.2015 / 19:17

2 respostas

1

Para o valor bs= , recomendamos que você configure 1024 da seguinte forma:

dd if=/dev/zero of=/dev/sda bs=1024

Mas se você é paranoico com relação à recuperação de dados - e quer fazer algo "mais strong" do que apenas escrever zeros - você pode usar /dev/urandom em vez disso:

dd if=/dev/urandom of=/dev/sda bs=1024

Uma maneira alternativa de limpar uma unidade.

Mas, pessoalmente, não gosto de usar dd para uma tarefa como essa. Em vez disso, uso uma pequena variante onde formato a unidade - e particionando novamente se precisar ser reparticionada - e, em seguida, execute o seguinte comando. Observe que, embora alguns possam considerar esse método como supostamente "ineficiente", você realmente precisa desconfiar muito da maneira como as partições e os sistemas de arquivos funcionam para acreditar que esse método não é um método alternativo viável:

cat /dev/zero >> /path/to/mounted/drive/junk_file &

Ou esta variante usando o dispositivo /dev/urandom , conforme explicado acima dd example:

cat /dev/urandom >> /path/to/mounted/drive/junk_file &

Basta alterar /path/to/mounted/drive/ para o caminho real da unidade montada. O que isso faz é criar um arquivo chamado junk_file no sistema de arquivos e fazê-lo como um processo em segundo plano com o & anexado ao final.

O bom de uma operação como essa é que você pode pará-la e retomar mais tarde. Significa que é apenas um arquivo cheio de zeros ou lixo urinário. Então, digamos que você precise desligar a máquina ou desconectar a unidade. Apenas faça isso. E, em seguida, execute o mesmo comando novamente e deixe-o continuar onde começou. Isso é útil ao limpar dados de unidades realmente grandes que podem levar horas para serem concluídas.

Para mais detalhes sobre esses e outros métodos seguros de exclusão de arquivos / dispositivos, confira esta página na ArchWiki . As dicas são úteis para praticamente qualquer sistema Linux / Unix - mesmo o Mac OS X - e não apenas o ArchLinux.

Velocidade da operação de limpeza de dados.

Quanto à velocidade, a velocidade geral deste tipo de operação pode ser estimada em quanto tempo levaria o seu sistema para copiar um arquivo de 160GB ou 500GB para a mesma unidade. Já que escrever um arquivo como esse é realmente o equivalente de dados de “copiar” um arquivo; Neste caso, apenas um arquivo está sendo criado.

FWIW, /dev/urandom levará mais tempo para fazer isso do que /dev/zero , porque /dev/urandom está realmente gerando dados aleatórios, então lembre-se disso se o tempo for um fator.

    
por 23.09.2015 / 19:27
0

Escrevi isso como um comentário , mas vou colocar isso como uma resposta também para visibilidade.

Para o tamanho do bloco dd , você quer um buffer grande o suficiente para que o programa não esteja apenas emitindo constantemente chamadas do sistema para quantidades triviais de E / S. Tendo copiado muitos discos usando dd , eu recomendo pelo menos bs=1M ou mesmo algo como 16M . Se o tamanho do seu disco não for um múltiplo exato do seu tamanho de bloco, você deixará no final um pequeno número de dados não sobrescritos. é uma aposta segura, não há nada lá, mas se você quiser ser paranóico, você pode obter manualmente o último bit.

Usar um tamanho de bloco pequeno (com /dev/zero ou qualquer outra origem) irá atrasá-lo, mas isso não é nada comparado com a lentidão de usar uma fonte de dados de bloqueio como /dev/random , que é o que aceitou resposta sugere no momento da escrita. A finalidade de /dev/random é gerar dados entropia máxima , não gerar lotes de dados. Não é apenas isso que é lento, mas que é extraído de um pool de entropia de tamanho limitado e o pool não é reabastecido muito rapidamente (especialmente se você não estiver fazendo mais nada com o sistema).

Quando o pool acabar, a leitura de /dev/random será bloqueada, recusando-se a fornecer mais dados até que o pool seja reabastecido. Você usa /dev/random para coisas como chaves criptográficas de longo prazo, não para dados em massa. Tentar extrair meio terabyte de /dev/random é uma ideia absolutamente terrível. Se você deseja muitos dados de alta entropia, é necessário usar /dev/urandom . Ele usa geradores pseudo-aleatórios para estender o pool de entropia para um tamanho arbitrário, desistindo de alguma entropia em troca de ter certeza de que uma leitura sempre terá sucesso em um tempo razoável.

    
por 23.09.2015 / 20:57