By | 27 noviembre, 2015

create large files

Varias veces he tenido la necesidad de crear archivos grandes, ya sea para luego darles formato de sistema de archivos y usarlos como imágenes o para llenar espacio en disco. Hasta ahora utilizaba el comando dd, pero hace poco encontré que existen formas múcho más rápidas para hacerlo y que terminan siendo más adecuadas.

dd

Como dije utilizaba el comando dd que está pensado para copiar archivos y, cuando se leen datos desde el dispositivo /dev/zero, se puede crear un archivo lleno de ceros.

dd if=/dev/zero of=archivo.img bs=1024 count=1000000

Página man dd

fallocate

fallocate se utiliza para pre-asignar bloques a un nombre de archivo. Esta tarea se realiza muy rápidamente porque solo se asignan bloques sin datos, por lo que no se realizan operaciones de entrada/salida y termina siendo mucho más rápido que crear un archivo lleno de ceros.

fallocate está disponible desde el kernel Linux v2.6.31 y está soportado por los sistemas de archivos btrfs, ext4, ocfs2 y xfs.

fallocate -l 10M archivo.img

Página man fallocate

truncate

truncate permite ampliar o reducir un archivo a un tamaño especificado. Si el archivo no existe, se crea con el tamaño específico, que es lo que generalmente necesito hacer.

Si un archivo es más grande que el tamaño especificado, se pierden los datos extra. Si un archivo es más corto, se extiende y la parte ampliada está llena de byte cero.

truncate -s 10M archivo.img

Página man truncate

xfs_mkfile

xfs_mkfile permite crear uno o más archivos en sistemas de archivo xfs exclusivamente (lo estandar en RedHat a partir de la versión 7).

El archivo por defecto se rellena con ceros por defecto. El tamaño que se indica por defecto es en bytes, pero se pueden indicar en kilobytes, bloques, megabytes o gigabytes con los parámetros k, b, m, o g, respectivamente.

xfs_mkfile 1240m archivo.img

Pagina man xfs_mkfile

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *