Como posso preencher um arquivo com dados aleatórios?

93

Como posso criar um novo arquivo e preenchê-lo com 1 gigabyte de dados aleatórios? Eu preciso disso para testar algum software.

Eu preferiria usar /dev/random ou /dev/urandom .

    
por Stefan Lasiewski 07.03.2012 / 01:26

3 respostas

129

Na maioria dos unices:

head -c 1G </dev/urandom >myfile

Se o seu head não entender o sufixo G , você poderá especificar o tamanho em bytes:

head -c 1073741824 </dev/urandom >myfile

Se o seu head não entender a opção -c (é comum, mas não POSIX; você provavelmente tem o OpenBSD):

dd bs=1024 count=1048576 </dev/urandom >myfile

Do não use /dev/random no Linux, use /dev/urandom .

    
por 07.03.2012 / 02:20
28

Assumindo que dados pseudo-aleatórios são suficientes, dd if=/dev/urandom of=target-file bs=1M count=1000 fará o que você quiser.

dd (1) lerá blocos de dados de um arquivo de entrada e os escreverá em um arquivo de saída. A linguagem de linha de comando é um pouco peculiar, mas é uma daquelas ferramentas realmente úteis que valem a pena dominar o básico.

Nesse caso, if é o arquivo de entrada, of é o arquivo de saída, bs é "tamanho do bloco" - e usei a extensão GNU para definir o tamanho de forma mais conveniente. (Você também pode usar 1048576 se o seu dd não tiver a extensão GNU). count é o número de blocos para ler if e gravar em of .

/dev/urandom é uma escolha melhor do que /dev/random becuase, no Linux, ele retornará a dados pseudo-aleatórios strongs em vez de bloquear quando dados aleatórios genuinamente estiverem esgotados.

Você também pode procurar no link como outro caminho para obter alguns dados aleatórios sem ter que gerá-los por conta própria.

    
por 07.03.2012 / 01:29
0
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee  5000kb

Usado para gerar dados aleatórios de 5MB. Se você precisar de tamanho diferente, altere o valor -c do cabeçalho, altere o nome do arquivo de saída, execute e espere até que a execução seja concluída.

    
por 08.05.2018 / 16:29

Tags