Testing Files Generator
Français

Comment créer un fichier d'une taille exacte

Chaque système a une commande pour cela, et les trois sont ci-dessous. Elles donnent un fichier du nombre d'octets exact - et pour beaucoup de tests, c'est tout ce qu'il faut. Chaque commande de cette page a été exécutée avant publication, sur le système auquel elle appartient.

La réponse courte

Windows : fsutil file createnew name 10485760. Linux : dd if=/dev/zero of=name bs=1M count=10. macOS : mkfile 10m name. Les tailles sont en octets, et 10 Mo comptés comme les compte votre gestionnaire de fichiers font 10485760 octets.

Windows

fsutil, et une version PowerShell qui n'a besoin de rien de plus

fsutil est fourni avec Windows. Il prend la taille en octets, calculez donc le nombre d'abord - 10 Mo font 10485760, 100 Mo font 104857600, 1 Go fait 1073741824.

fsutil file createnew test10mb.bin 10485760

Mesuré sous Windows 11 : cela fonctionne depuis une invite ordinaire sans exiger de droits élevés, et le fichier fait exactement 10485760 octets.

PowerShell sait faire la même chose sans appeler un autre programme, et il comprend les unités :

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

10MB en PowerShell signifie 10485760 octets, le même comptage par 1024 qu'utilise l'Explorateur, donc les deux commandes ci-dessus produisent la même taille.

Linux

dd, truncate et fallocate, et la différence qui piège les gens

dd est celle que tout le monde connaît. Elle écrit vraiment les octets :

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

truncate est instantané, et c'est là le piège. Mesuré sous Alpine Linux, le fichier annonce 10485760 octets et occupe zéro bloc - c'est un fichier creux. Tout ce qui le lit obtient dix mégaoctets de zéros, mais le disque n'a jamais cédé la place :

truncate -s 10M test10mb.bin

C'est correct pour tester une limite d'envoi et trompeur pour tester un quota de disque. fallocate est celui à choisir quand l'espace doit être réel :

fallocate -l 10M test10mb.bin

Et quand le contenu doit être incompressible, pour qu'un archiveur ne puisse pas le réduire à nouveau :

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

macOS

mkfile, qui n'est pas creux, et les deux que vous connaissez déjà

macOS fournit mkfile. Mesuré sous macOS 26.6.2 : 10485760 octets et 20480 blocs, donc l'espace est réellement alloué plutôt que promis :

mkfile 10m test10mb.bin

dd et truncate sont là aussi et se comportent comme sous Linux :

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

Là où cela cesse de suffire

Un fichier de la bonne taille n'est pas un fichier du bon type

Tout ce qui précède donne un bloc de zéros. C'est suffisant quand ce qui est testé ne regarde que la taille - une limite d'envoi, un quota, un transfert. Cela cesse de l'être dès que quelque chose ouvre le fichier.

Mesuré, et cela vaut la peine de le faire vous-même : créez un fichier de 2 Mo avec fsutil, appelez-le photo.png et donnez-le à une bibliothèque d'images. Pillow répond cannot identify image file. Ce n'est pas un PNG. Cela n'en a jamais été un - seul le nom le prétendait.

Cela compte plus qu'il n'y paraît, à cause de la façon dont le test échoue ensuite. Votre point d'envoi refuse le fichier, votre test passe au vert et vous concluez que la limite de taille fonctionne. Il ne l'a pas refusé pour sa taille. Il l'a refusé parce que les octets n'étaient pas une image, et la règle que vous vouliez tester n'a jamais été atteinte.

L'autre voie

Un vrai fichier de ce format, à la taille exacte que vous avez demandée

C'est ce que fait Testing Files Generator. Le fichier est un vrai fichier de son format - il s'ouvre dans le logiciel qui lui correspond - et il fait le nombre d'octets exact que vous avez demandé, à l'octet près :

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

Demandez une taille qu'un format ne peut pas atteindre et vous obtenez une erreur qui nomme le plancher et sa raison, jamais un fichier de mauvaise taille. La page des formats liste chaque format avec le plus petit fichier qu'il peut produire.

Et une limite, ce sont trois cas de test et non un, donc l'outil construit les trois :

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

Cela donne 10485759, 10485760 et 10485761 octets, et un manifeste qui dit lesquels votre système doit accepter et lesquels il doit refuser. La page des cas d'usage passe en revue cela et quatre autres tâches pour lesquelles il est conçu.

Gratuit et open source, GPL-3.0. Aucune inscription. Les téléchargements Windows et macOS sont signés et démarrent sans avertissement.

Alors lequel utiliser ?

Les deux sont sur cette page parce que les deux sont justes une partie du temps. L'erreur à éviter est d'utiliser la première là où il faut la seconde et de lire le test vert comme une preuve.