Как я могу быстро сделать большой файл?
Какой быстрый и простой способ создать файл размером, скажем, 2 ГБ?
3 ответа
Метод нулевого заполнения (здесь измененный, чтобы избежать потенциальных узких мест в памяти) занял 17 секунд, чтобы создать файл объемом 10 ГБ на SSD, и графический интерфейс Ubuntu перестал отвечать на запросы.
$ time sh -c 'dd if=/dev/zero iflag=count_bytes count=10G bs=1M of=large; sync'
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 17.2003 s, 624 MB/s
real 0m17.642s
user 0m0.008s
sys 0m9.404s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
10737422336 large
Fallocate мгновенно создает большие файлы, напрямую манипулируя выделенным дисковым пространством файла:
$ time sh -c 'fallocate -l 10G large; sync'
real 0m0.038s
user 0m0.000s
sys 0m0.016s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
10737422336 large
truncate также работает мгновенно и создает разреженные файлы, которые не занимают фактическое дисковое пространство, пока данные не будут записаны позже:
$ time sh -c 'truncate -s 10G large; sync'
real 0m0.014s
user 0m0.000s
sys 0m0.004s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
0 large
Простой способ будет использовать dd
Команда, чтобы написать файл, полный нулей.
dd if=/dev/zero of=outputFile bs=2G count=1
- if = входной файл
- of = выходной файл
- bs = байты
Используйте G в аргументе размера, если вы хотите компьютер (1024*1024*1024) гигабайт, или ГБ, если вы хотите человеческий (1000*1000*1000) гигабайт.
ftp://ftp.fsf.hu/testfiles/maketestfiles.sh
или Seek - размер требуемого файла в байтах - 1.
dd if=/dev/zero of=filename.big bs=1 count=1 seek=1048575 # 1 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=10485759 # 10 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=104857599 # 100 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=1073741823 # 1024 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=42949672959 # 40960 MByte