Crear archivo grande en Linux de forma rápida
En muchas ocasiones es necesario crear archivos de gran tamaño para realizar pruebas o simplemente para realizar algún tipo de configuración. Cuando necesitamos crear un archivo grande en Linux de forma rápida, la mejor opción es recurrir a las herramientas disponibles para crear uno.
Nuestro objetivo será crear un archivo de gran tamaño y además hacerlo de forma rápida para evitar esperas innecesarias. Esto que puede parecer muy sencillo, requiere que prestemos atención a algunas consideraciones. Por ejemplo, cuando creamos el archivo este podrá contener datos aleatorios, datos duplicados, datos no duplicados o simplemente ceros.
Para cubrir las cuestiones básicas y ofrecer un punto de partida sólido en la creación de archivos en Linux, hemos creado este pequeño tutorial explicativo.
Herramientas y comandos para crear archivos en Linux.
En los sistemas operativos Linux tenemos una gran variedad de herramientas para crear archivos de todo tipo, pero cada una tiene sus ventajas e inconvenientes. En este tutorial vamos a mostrar las herramientas habituales con las que ejecutando un simple comando en la consola tendremos el archivo creado. Las herramientas que usaremos son:
dd
truncate
fallocate
Ventajas e inconvenientes de dd para crear archivos grandes.
En primer lugar tenemos dd
, que es la opción clásica que siempre se ha usado para crear archivos de tamaño considerable. Esta herramienta ha sido diseñada básicamente para copiar archivos, por ello cuando la usamos para crear un archivo, se escriben todos los bloques de datos en la unidad de disco duro, lo que nos lleva a un tiempo más elevado en operaciones I/O.
Pero no todo son desventajas en dd
, tiene una ventaja muy importante, la compatibilidad. Con dd podemos crear archivos de gran tamaño en cualquier tipo de sistema de archivos. Podríamos decir que es la opción lenta pero más compatible.
Usando el comando truncate para crear archivos.
La segunda opción que os vamos a mostrar es el comando truncate
, que es la opción más rápida, pero también la que nos puede dar más de un problema. Personalmente desaconsejo su uso, ya que truncate
no localiza y reserva el espacio, sino que simula como si hubiese un archivo del tamaño especificado.
Usando fallocate para crear archivos de gran tamaño.
Por último tenemos el comando fallocate
, que es en mi opinión la opción más rápida y fiable. Con fallocate
se reserva y localiza el espacio especificado, pero es más rápido que dd
porque no escribe los bloques de datos. Su única limitación es que sólo soporta los sistemas de archivos: xfs, ext4, Btrfs y tmpfs.
Algunos ejemplos de uso de fallocate
son:
- Crear archivo de 512MB:
sudo fallocate -l 512M /archivogrande
- Crear archivo de 1GB:
sudo fallocate -l 1G /archivogrande
Cómo crear archivos grandes en Linux de forma rápida y sencilla.
Antes de continuar, he de aclarar que para mantener este tutorial a modo de introducción básica, no vamos a considerar la posibilidad de que los datos del archivo creado puedan ser duplicados o no. Sólo nos vamos centrar en si los datos queremos que sean ceros o si queremos que sean datos aleatorios.
Cómo crear un archivo grande cuyo contenido sea todo ceros.
En ocasiones el contenido del archivo que vamos a crear nos interesa que sea todo ceros o si el contenido nos da igual, elegir que sea todo ceros es la opción más rápida. Este tipo de archivos es muy usado cuando creamos una partición swap en Linux.
En función del comando elegido, tendríamos los siguientes ejemplos:
- Para crear un archivo de 512MB:
sudo dd if=/dev/zero of=/archivogrande bs=1024 count=512k
- Para crear un archivos de 1GB:
sudo dd if=/dev/zero of=/archivogrande bs=1024 count=1024k
Vemos que hemos usado /dev/zero
, que es un archivo especial que siempre nos devuelve el valor cero o null.
Crear un archivo de gran tamaño cuyo contenido sea aleatorio.
A veces necesitamos que el contenido del archivo sea aleatorio o simplemente diferente de ceros, es en este caso cuando echaremos mano de los archivos especiales del sistema /dev/random
y /dev/urandom
.
Básicamente ambos archivos tienen el mismo fin y ambos devuelven un valor aleatorio. No vamos a profundizar en las diferencias entre /dev/random
y /dev/urandom
, para este tutorial llega con saber que /dev/random
se puede bloquear, mientras que /dev/urandom
no.
La ventaja de /dev/random
es que usa una mayor entropía lo que nos garantiza una mayor aleatoriedad en los valores generados, pero como se puede bloquear, en ocasiones puede resultar lento. Por lo general el uso de /dev/urandom
es el más recomendable a la hora de crear ficheros de tamaños considerables.