2012-09-06 18:03:06 +0000 2012-09-06 18:03:06 +0000
91
91

¿Cómo creo un archivo aleatorio de 1GB en Linux?

Estoy usando el shell bash y me gustaría canalizar el comando openssl rand -base64 1000 al comando dd como dd if={output of openssl} of="sample.txt bs=1G count=1. Creo que puedo usar variables pero no estoy seguro de cuál es la mejor manera de hacerlo. La razón por la que me gustaría crear el archivo es porque me gustaría un archivo de 1GB con texto aleatorio.

Respuestas (4)

139
139
139
2012-09-06 18:17:14 +0000

if= no es necesario, se puede introducir algo en dd en su lugar:

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

No sería útil aquí ya que openssl rand requiere especificar el número de bytes de todos modos. Así que en realidad no necesitas dd - esto funcionaría:

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

1 gigabyte es normalmente 230 bytes (aunque puedes usar 10**9 para 109 bytes en su lugar). La parte de * 3/4 representa la sobrecarga de Base64, haciendo que la salida de encoded sea de 1 GB.

Alternativamente, podrías usar /dev/urandom, pero sería un poco más lento que OpenSSL:

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

Personalmente, usaría bs=64M count=16 o similar:

dd if=/dev/urandom of=sample.txt bs=64M count=16
26
26
26
2015-05-21 14:52:41 +0000

Crear un archivo de contenido aleatorio de 1GB.bin:

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

2
2
2
2017-07-06 21:48:13 +0000

Si quieres EXACTAMENTE 1GB, entonces puedes usar lo siguiente:

openssl rand -out $archivo -base64 792917038; truncado -s-1 $archivo

El comando openssl hace que un archivo sea exactamente 1 byte demasiado grande. El comando truncate recorta ese byte.

-1
-1
-1
2012-09-06 18:12:03 +0000

Prueba este guión.

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

Este guión podría funcionar siempre y cuando no te importe usar /dev/random.

#!/bin/bash
dd if=/dev/random of="sample.txt bs=1G count=1"