如何快速制作大文件?

ænd*_*rük 27 files disk-usage

什么是制作 2 GB 大小的文件的快速简便的方法?

ænd*_*rük 38

所述填零方法(这里修改以避免潜在的内存瓶颈)花了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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)


Mik*_*eVB 21

一种简单的方法是使用该dd命令写入一个全为零的文件。

dd if=/dev/zero of=outputFile bs=2G count=1
Run Code Online (Sandbox Code Playgroud)
  • 如果 = 输入文件
  • 的 = 输出文件
  • bs = 字节

如果您想要计算机 (1024*1024*1024) GB,请在 size 参数中使用 G,如果您想要人类 (1000*1000*1000) GB,请在大小参数中使用 G。

  • 使用 /dev/random 将花费 *可怕* 的大量时间。在这种情况下使用`/dev/urandom`(它是非阻塞的,但不能保证具有相同级别的随机性)。从任何一个中提取 2 GB 几乎肯定会完全耗尽系统的熵,因此在此之后的一段时间内不要进行任何加密操作。 (10认同)