¿Cómo puedo crear un nuevo archivo y llenarlo con 1 Gigabyte de datos aleatorios? Necesito esto para probar algún software.
Preferiría usar /dev/random
o /dev/urandom
.
¿Cómo puedo crear un nuevo archivo y llenarlo con 1 Gigabyte de datos aleatorios? Necesito esto para probar algún software.
Preferiría usar /dev/random
o /dev/urandom
.
Respuestas:
En la mayoría de las unidades:
head -c 1G </dev/urandom >myfile
Si head
no comprende el G
sufijo, puede especificar el tamaño en bytes:
head -c 1073741824 </dev/urandom >myfile
Si head
no entiende la -c
opción (es común pero no POSIX; probablemente tenga OpenBSD):
dd bs=1024 count=1048576 </dev/urandom >myfile
head
no entiende -c
en mi máquina Solaris 10.
head
puede leer /dev/urandom
, pero tail
no puede.
tail
primero intenta ir al final del archivo de entrada, lo que lleva una eternidad (literalmente).
/dev/zero
, si no te gusta la variedad.
Suponiendo que los datos pseudoaleatorios son suficientes, dd if=/dev/urandom of=target-file bs=1M count=1000
hará lo que desee.
dd (1) leerá bloques de datos de un archivo de entrada y los escribirá en un archivo de salida. El lenguaje de línea de comandos es un poco peculiar, pero es una de esas herramientas realmente útiles que vale la pena dominar los conceptos básicos.
En este caso if
es un archivo de entrada, of
es un archivo de salida, bs
es "tamaño de bloque", y utilicé la extensión GNU para establecer el tamaño más convenientemente. (También puede usar 1048576 si dd
no tiene la extensión GNU.) count
Es el número de bloques para leer if
y escribir of
.
/dev/urandom
es una mejor opción que /dev/random
porque, en Linux, recurrirá a datos pseudoaleatorios fuertes en lugar de bloquear cuando se agoten los datos realmente aleatorios.
También puede considerar http://www.random.org/ como otra ruta para obtener algunos datos aleatorios sin tener que generarlos usted mismo.
1M
no están disponibles en todas las dd
variantes estándar . Si su versión de dd
se ve afectada, use bs=1048576
.
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee 5000kb
Lo usé para generar datos de caracteres aleatorios de 5 MB. Si necesita un tamaño diferente, cambie el -c
valor de head, cambie el nombre del archivo, ejecute y espere hasta que se complete la ejecución.
vi
convi -w randomfile
y pida a alguien que nunca ha vistovi
para salir del programa. ;)