如何快速制作大文件?

制作文件(例如2 GB)的快速简便方法是什么?

零填充方法 (此处经过修改以避免潜在的内存瓶颈 )需要17秒才能在SSD上创建10 GB文件,并导致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 =字节

如果您想要计算机(1024 * 1024 * 1024)千兆字节,请在size参数中使用G;如果需要人(1000 * 1000 * 1000)千兆字节,则使用GB。

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