Como eu crio um arquivo aleatório de 1GB no Linux?

74

Estou usando o bash shell e gostaria de enviar o comando openssl rand -base64 1000 para o comando dd , como dd if={output of openssl} of="sample.txt bs=1G count=1 . Eu acho que posso usar variáveis, mas não tenho certeza da melhor forma de fazê-lo. O motivo pelo qual eu gostaria de criar o arquivo é porque gostaria de um arquivo de 1 GB com texto aleatório.

    
por PeanutsMonkey 06.09.2012 / 20:03

4 respostas

109

if= não é obrigatório, você pode canalizar algo para dd :

something... | dd of=sample.txt bs=1G count=1

Não seria útil aqui, pois openssl rand requer a especificação do número de bytes. Então você realmente não precisa de dd - isso funcionaria:

openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 ))

1 gigabyte é geralmente 2 30 bytes (embora você possa usar 10**9 para 10 9 bytes). A parte * 3/4 é responsável pela sobrecarga de Base64, tornando a saída codificada 1 GB.

Como alternativa, você pode usar /dev/urandom , mas seria um pouco mais lento que o OpenSSL:

dd if=/dev/urandom of=sample.txt bs=1G count=1

Pessoalmente, eu usaria bs=64M count=16 ou similar:

dd if=/dev/urandom of=sample.txt bs=64M count=16
    
por 06.09.2012 / 20:17
19

Crie um arquivo de conteúdo aleatório de 1 GB.bin:

dd if=/dev/urandom of=1GB.bin bs=64M count=16 iflag=fullblock

    
por 21.05.2015 / 16:52
0

Experimente este script.

#!/bin/bash
openssl rand -base64 1000 | dd of=sample.txt bs=1G count=1

Esse script pode funcionar desde que você não se importe em usar /dev/random .

#!/bin/bash
dd if=/dev/random of="sample.txt bs=1G count=1"
    
por 06.09.2012 / 20:12
0

Se você quiser EXATAMENTE 1 GB, poderá usar o seguinte:

openssl rand -out $ testfile -base64 792917038; truncar -s-1 $ testfile

O comando openssl torna um arquivo com exatamente 1 byte muito grande. O comando truncar apara esse byte desativado.

    
por 06.07.2017 / 23:48

Tags