有什么快速简便的方法可以制作一个大小为 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