web-dev-qa-db-fra.com

Générer un fichier d'une certaine taille?

Je voudrais générer un fichier avec le nom example.file. je pourrais utiliser

touch example.file

mais je veux que le fichier soit exactement de 24 Mo. J'ai déjà vérifié la page de manuel de touch, mais il n'y a pas de paramètre comme celui-ci. Existe-t-il un moyen simple de générer des fichiers d'une certaine taille?

119
R_User

Vous pouvez utiliser dd:

dd if=/dev/zero of=output.dat  bs=24M  count=1

ou

dd if=/dev/zero of=output.dat  bs=1M  count=24

ou, sur Mac,

dd if=/dev/zero of=output.dat  bs=1m  count=24
152
Paul92

Sous Linux non intégré ou Cygwin (ou tout système avec GNU coreutils) et FreeBSD:

truncate -s 24m example.file

Cela crée un fichier plein d'octets nuls. Si le fichier existe déjà et est plus petit, il est étendu à la taille demandée avec des octets nuls. Si le fichier existe déjà et est plus volumineux, il est tronqué à la taille demandée.

Les octets nuls ne consomment pas d'espace disque, le fichier est un fichier épars .

Sur de nombreux systèmes, head -c 24m </dev/zero >example.file crée un fichier non clairsemé plein d'octets nuls. Si head n'a pas de -c option sur votre système (c'est courant mais pas dans POSIX), vous pouvez utiliser dd bs=1024k count=24 </dev/zero >example.file à la place (ceci est compatible POSIX).

Si vous ne vous souciez pas du contenu du fichier, c'est beaucoup plus rapide que d'utiliser dd:

fallocate -l 24M filename

Évidemment, l'utilisation de dd pour un fichier de 24 Mo ne prendra pas de temps sur un système moderne, mais les fichiers plus volumineux peuvent être sensiblement lents.

31
SArcher

Vous pouvez utiliser dd:

dd if =/dev/zero of = outputfile.out bs = 1024k count = 24

Ou au cas où vous utilisez Solaris

mkfile 24m outputfile.out
14
BitsOfNix
FROM_NODE=N01;
echo; cd $MOUNT_PATH; pwd; ls -la; sleep 1; echo;
WHEN="$(date +%Y-%m-%d_%H-%M-%S)";
fallocate -l 10M $MOUNT_PATH/"$FROM_NODE"_"$WHEN".dump
ls -lha; echo;
0
Pascal Andy