Testing Files Generator
Español

Cómo crear un archivo de un tamaño exacto

Cada sistema tiene un comando para ello, y los tres están abajo. Te dan un archivo con exactamente el número correcto de bytes - y para muchas pruebas eso es todo lo que necesitas. Cada comando de esta página se ejecutó antes de publicarse, en el sistema al que pertenece.

La respuesta corta

Windows: fsutil file createnew name 10485760. Linux: dd if=/dev/zero of=name bs=1M count=10. macOS: mkfile 10m name. Los tamaños son en bytes, y 10 MB contados como los cuenta tu gestor de archivos son 10485760.

Windows

fsutil, y una versión de PowerShell que no necesita nada extra

fsutil viene con Windows. Toma el tamaño en bytes, así que calcula antes el número - 10 MB son 10485760, 100 MB son 104857600, 1 GB es 1073741824.

fsutil file createnew test10mb.bin 10485760

Medido en Windows 11: funciona desde un símbolo del sistema normal sin necesitar uno elevado, y el archivo sale con exactamente 10485760 bytes.

PowerShell puede hacer lo mismo sin llamar a otro programa, y entiende unidades:

$file = New-Object System.IO.FileStream "test10mb.bin", Create, ReadWrite
$file.SetLength(10MB)
$file.Close()

10MB en PowerShell significa 10485760 bytes, el mismo recuento en base 1024 que usa el Explorador, así que los dos comandos anteriores producen el mismo tamaño.

Linux

dd, truncate y fallocate, y la diferencia que pilla a la gente

dd es el que todo el mundo conoce. Escribe los bytes de verdad:

dd if=/dev/zero of=test10mb.bin bs=1M count=10

truncate es instantáneo, y esa es la trampa. Medido en Alpine Linux, el archivo informa de 10485760 bytes y ocupa cero bloques - es un archivo disperso. Cualquier cosa que lo lea obtiene diez megabytes de ceros, pero el disco nunca cedió el espacio:

truncate -s 10M test10mb.bin

Eso sirve para probar un límite de subida y engaña para probar una cuota de disco. fallocate es el que hay que usar cuando el espacio tiene que ser real:

fallocate -l 10M test10mb.bin

Y cuando el contenido tiene que ser incompresible, para que un compresor no pueda volver a reducirlo:

head -c 10485760 /dev/urandom > test10mb.bin

macOS

mkfile, que no es disperso, y los dos que ya conoces

macOS incluye mkfile. Medido en macOS 26.6.2: 10485760 bytes y 20480 bloques, así que el espacio está realmente asignado en lugar de prometido:

mkfile 10m test10mb.bin

dd y truncate también están y se comportan como en Linux:

dd if=/dev/zero of=test10mb.bin bs=1m count=10
truncate -s 10M test10mb.bin

Dónde esto deja de funcionar

Un archivo del tamaño correcto no es un archivo del tipo correcto

Todo lo anterior te da un bloque de ceros. Eso basta cuando lo que se prueba solo mira el tamaño - un límite de subida, una cuota, una transferencia. Deja de bastar en cuanto algo abre el archivo.

Medido, y merece la pena que lo hagas tú: crea un archivo de 2 MB con fsutil, llámalo photo.png y pásaselo a una biblioteca de imágenes. Pillow responde cannot identify image file. No es un PNG. Nunca lo fue - solo lo decía el nombre.

Eso importa más de lo que parece, por la forma en que la prueba falla entonces. Tu endpoint de subida rechaza el archivo, tu prueba se pone en verde y concluyes que el límite de tamaño funciona. No lo rechazó por el tamaño. Lo rechazó porque los bytes no eran una imagen, y la regla que querías probar nunca se alcanzó.

La otra vía

Un archivo real de ese formato, con exactamente el tamaño que pediste

Esto es lo que hace Testing Files Generator. El archivo es uno genuino de su formato - se abre en el programa que le corresponde - y tiene el número exacto de bytes que pediste, al byte:

tfg generate --format png --size 10mb --out ./fixtures

Pide un tamaño que un formato no puede alcanzar y obtienes un error que nombra el suelo y su motivo, nunca un archivo del tamaño equivocado. La página de formatos lista cada formato con el archivo más pequeño que puede producir.

Y un límite son tres casos de prueba y no uno, así que la herramienta construye los tres:

tfg generate --format pdf --boundary 10mb --out ./edges

Eso te da 10485759, 10485760 y 10485761 bytes, y un manifiesto que dice cuáles debe aceptar tu sistema y cuáles rechazar. La página de casos de uso repasa eso y otras cuatro tareas para las que está pensada.

Gratuito y de código abierto, GPL-3.0. Sin registro. Las descargas de Windows y macOS están firmadas y se inician sin advertencias.

Entonces, ¿cuál debes usar?

Ambos están en esta página porque ambos aciertan parte del tiempo. El error que conviene evitar es usar el primero donde hace falta el segundo y leer la prueba en verde como una demostración.