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?
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
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.
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
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;