shell快速创建文件的三种方法对比

shell快速创建文件的三种方法对比。

以下三个命令都能生产一个4G大小的文件。

1. fallocate -l 4G f1
2. dd if=/dev/zero of=f2 bs=1G count=4
3. dd if=/dev/zero of=f3 bs=1G count=0 seek=4

其中1和3 速度奇快。
md5sum f1 f2 f3会发现生成的三个文件内容是一样的。

命令2是常规的生成文件的方式。
解释一下3,在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘。
此时创建的文件在文件系统中的显示大小为4G,但是并不实际占用block,因此创建速度与内存速度相当,seek的作用是跳过输出文件中指定大小的部分,这就达到了创建大文件,但是并不实际写入的目的。
(引用自https://www.cnblogs.com/Crazy-Liu/p/11095814.html)

$ time fallocate -l 3G f.3g.fallocate;
real	0m0.813s
user	0m0.000s
sys	0m0.002s

$ time dd if=/dev/zero of=f.3g.dd1 bs=1G count=3;
real	0m20.792s
user	0m0.000s
sys	0m1.634s

$ time dd if=/dev/zero of=f.3g.dd2 bs=1G count=0 seek=3;
real	0m0.001s
user	0m0.001s
sys	0m0.000s

$ md5sum f.3g*
c698c87fb53058d493492b61f4c74189  f.3g.dd1
c698c87fb53058d493492b61f4c74189  f.3g.dd2
c698c87fb53058d493492b61f4c74189  f.3g.fallocate

hexdump -C f.3gxxxx都是0x00000
md5sum f.3g.fallocate f.3g.dd1 f.3g.dd2是一样的。

  1. 123都能创建大文件
  2. 1和3速度奇快。
  3. 123内容一样,md5值一样。
    那方法2和3有什么区别?(以后再想)

参考
https://www.cnblogs.com/Crazy-Liu/p/11095814.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值