Este breve artículo explica cómo crear rápidamente un archivo de gran tamaño, con contenido aleatorio.
Si necesitamos crear un archivo de gran tamaño relleno de basura (por ejemplo para realizar pruebas o reservar espacio en disco), necesitamos recurrir a la herramienta dd.
dd se utiliza para copiar archivos. Aunque es posible crear archivos tomando como entrada los dispositivos /dev/random, /dev/zero y otros.
El dispositivo /dev/random es una fuente inagotable de bytes de valor aleatorio.
Entonces, si deseamos crear el archivo /tmp/archivo_grande de exactamente 1 megabyte, utilizamos el siguiente comando:
emi@hal9000:/tmp % dd if=/dev/random of=/tmp/archivo_grande bs=1024 count=1024 1024+0 records in 1024+0 records out 1048576 bytes transferred in 0.011602 secs (90375652 bytes/sec)
El archivo de entrada (origen) es /dev/random, y el archivo de salida /tmp/archivo_grande. El parámetro bs indica el tamaño de bloque a copiar, especificado en bytes. El valor 1024 corresponde exactamente a 1 kilobyte. Lugeo, mediante el parámetro count se especifican la cantidad de bloques a copiar, en este caso 1024, lo que equivale a 1024 kilobytes, o sea 1 megabyte:
emi@hal9000:/tmp % ls -l /tmp/archivo_grande -rw-r--r-- 1 emi wheel 1048576 Aug 24 12:37 /tmp/archivo_grande emi@hal9000:/tmp % ls -lh /tmp/archivo_grande -rw-r--r-- 1 emi wheel 1.0M Aug 24 12:37 /tmp/archivo_grande
El tipo de archivo resultante es "data" (valores binarios en formato no imprimible):
emi@hal9000:/tmp % file archivo_grande archivo_grande: data
Además, se observa que su contenido es aleatorio, como era de esperarse>
emi@hal9000:/tmp % hexdump -C /tmp/archivo_grande | head 00000000 6e 03 c8 f7 20 d3 00 8b db e4 35 2a 03 42 0b 89 |n... .....5*.B..| 00000010 2d ad 79 6d 33 93 e6 b1 5f 11 3f b4 ea 04 83 c1 |-.ym3..._.?.....| 00000020 f0 12 a0 b3 5a 35 bb ee 3b 63 d7 fc 1f f4 a6 50 |....Z5..;c.....P| 00000030 56 bf 56 62 35 c3 ce 99 c0 05 b3 08 6e 06 e9 44 |V.Vb5.......n..D| 00000040 3f d2 3b 1a 97 9f 44 60 78 de 72 ca 95 aa 4d 62 |?.;...D`x.r...Mb| 00000050 6b e0 e1 76 1d 23 af 3d c3 2b c7 de 89 3a 29 ee |k..v.#.=.+...:).| 00000060 ed 13 14 82 d1 da 42 ba 83 bb 97 b8 c1 0f 27 c3 |......B.......'.| 00000070 d0 dd 6c 3f 9d de 11 b2 74 b0 d4 db 11 1d bf 09 |..l?....t.......| 00000080 a3 bf cf 8f 26 f8 85 c8 5c 8a 2a 49 c5 90 b3 96 |....&...\.*I....| 00000090 8d db 75 fd 69 62 80 1a 13 c0 ba b8 a1 ba 53 13 |..u.ib........S.|
Si en cambio deseamos crear un archivo de gran tamaño relleno por ceros (por ejemplo para compactar un disco virtual, es decir, recuperar bloques de disco libres cuando se utilizan tecnologías de virtualización), recurrir al dispositivo /dev/zero:
emi@hal9000:/tmp % dd if=/dev/zero of=/tmp/archivo_grande bs=1024 count=1024 1024+0 records in 1024+0 records out 1048576 bytes transferred in 0.002418 secs (433703585 bytes/sec) emi@hal9000:/tmp % ls -l /tmp/archivo_grande -rw-r--r-- 1 emi wheel 1048576 Aug 24 12:51 /tmp/archivo_grande emi@hal9000:/tmp % hexdump -v -C /tmp/archivo_grande | head 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Referencias
man dd man random man zero
Fuente: linuxito
