Cela devrait être le moyen le plus rapide de le faire :
SEEK=$SIZE-1
dd if=/dev/zero of=outfile bs=1 seek=$SEEK count=1
Sinon, il suffit d'écrire un programme C ou perl rapide et sale qui cherche la position exacte et écrit un seul octet. C'est BEAUCOUP plus rapide que de déverser des données sur les blocs.
Si vous voulez éviter les fichiers épars, alors sous Linux (et peut-être d'autres systèmes) vous pouvez utiliser fallocate -l <length>
de util-linux
.
Si ce n'est pas disponible, et que vous avez un système compatible POSIX, vous pouvez écrire un programme rapide et sale en utilisant l'appel de la bibliothèque posix_fallocate(). posix_fallocate garantit l'allocation de l'intervalle spécifié, de sorte que vous n'aurez pas de disque plein lors de l'utilisation ultérieure de l'intervalle s'il retourne avec succès.