Meu sistema não está corrompido e escrever a partir de /dev/random
é de aproximadamente 650Kb / s. Escrevendo de /dev/urandom
é 7Kb / s.
Eu trabalhei essa questão para mim e para uma solução puramente bash você tem que ser realista sobre o que seu objetivo é porque a menos que seu objetivo é aprender como fazê-lo em bash porque o ponto é fazer tudo em bash, o objetivo de limpar um disco com segurança é melhor realizado de outras maneiras, embora o bash seja útil na solução.
O algoritmo bash de evildead para selecionar aleatoriamente onde o dd irá gravar no drive funciona, no entanto, o / dev / urandom é significativamente mais lento que / dev / random e eu acho que é menos seguro chupar o drive com pedaços de dados aleatórios e eu acho será mais difícil recuperar dados de uma unidade limpa se você rapidamente fizer dois passos para escrever os zeros.
Para mim, escrevi para a unidade com:
tr 'pv < /dev/zero > /dev/sdz
' '7' < /dev/zero | pv > /dev/sdz
então escrevi zeros para a unidade com:
while :; do ./svrandom; done | pv > /dev/sdz
Observe o uso de pv. É um ótimo programa que você tem que instalá-lo na maioria dos sistemas. Fácil de encontrar, não parece vir com uma página de manual, mas existe uma on-line. Ele mostra o progresso dos dados passando por um pipe e com alguns programas você pode até configurá-lo para parar depois que uma certa quantidade de dados é passada.
ENTÃO puramente porque eu estava irritado que nenhuma solução bash iria escrever números aleatórios tão rápido como qualquer uma dessas gravações acima, eu escrevi um pequeno programa em C chamado svrandom para gerar números aleatórios rapidamente que eu chamei de bash da seguinte forma:
/* svrandom
a small program from shadowvision.com September 2015 to generate strings of random numbers.
the default setting of 10000000 gives about 453 megs, adjust as
needed */
#include <stdio.h>
#include <stdlib.h>
int main()
{
int r,a,b;
/* adjust following number as needed to suit your string length */
for(a=0;a<10000000;a++)
{
for(b=0;b<5;b++)
{
r=rand();
printf("%d",r);
}
}
return(0);
}
No meu sistema que preenche o drive / dev / sdz com números aleatórios tão rápido quanto escrever / dev / zero. Objetivo de limpar a unidade com números aleatórios alcançados e bash foi usado na solução.
tr 'pv < /dev/zero > /dev/sdz
' '7' < /dev/zero | pv > /dev/sdz
Na fonte, menciono que você pode controlar o comprimento da sequência numérica aleatória ajustando um número. Se você chamá-lo de um loop while você não terá que, embora possa haver um retorno de carro no final de cada loop, mas se você quiser uma seqüência contínua de apenas o programa, você terá que alterar o número.
recorte!
olhando em volta, encontrei essa solução no link
openssl enc -aes-256-ctr -passpass: "$ (dd se = / dev / urandom bs = 128 contador = 1 2 > / dev / null | base64)" -nosalt < / dev / zero | pv > / dev / sd {x}
e como o cara disse, não acredito no quão rápido isso é. Ele está gravando no disco mais rápido do que eu achava que a velocidade máxima de gravação dos discos era.
Parece-me que este comando está usando openssl para criptografar uma cadeia de zeros de / dev / zero usando / dev / urandom como a semente, mas não tenho 100% de certeza.
minha solução com o programa C para escrever números aleatórios escreve para o meu sistema a 82mbps, esta solução openssl está escrevendo em 100mbps. uau!