Это должен быть самый быстрый способ сделать это:
SEEK=$SIZE-1
dd if=/dev/zero of=outfile bs=1 seek=$SEEK count=1
В противном случае просто напишите быструю и грязную программу на C или Perl, которая ищет точную позицию и записывает один байт. Это намного быстрее, чем фактический сброс данных в блоки.
Если вы хотите , чтобы избежать разреженных файлов , то на Linux (и , возможно , другие системы) , вы можете использовать fallocate -l <length>
с util-linux
.
Если это недоступно, и у вас есть POSIX-совместимая система, вы можете написать быструю и грязную программу, используя вызов библиотеки posix_fallocate (). posix_fallocate гарантирует выделение указанного диапазона, поэтому вы не получите заполненный диск при последующем использовании диапазона, если он вернется успешно