如何才能快速制作大文件?

如何才能快速制作大文件?

有什么快速简便的方法可以制作一个大小为 2 GB 的文件?

答案1

零填充法(此处修改以避免潜在的内存瓶颈) 花了 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

谬误通过直接操作文件分配的磁盘空间立即创建大文件:

$ 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

截短也能立即发挥作用,并且创造稀疏文件直到稍后写入数据时才占用实际的磁盘空间:

$ 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

答案2

一个简单的方法是使用dd命令写入一个充满零的文件。

dd if=/dev/zero of=outputFile bs=2G count=1
  • 如果 = 输入文件
  • = 输出文件
  • bs = 字节

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

答案3

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

相关内容