美文网首页
dd命令创建稀疏文件

dd命令创建稀疏文件

作者: 汤尼房 | 来源:发表于2018-06-24 09:56 被阅读119次

    文章主要是对使用dd命令创建稀疏文件的实践记录。
    dd命令的帮助文档中对 seek=N skip N obs-sized blocks at start of output 解释道:略过输出文件前N * obs-sized的空间,然后再向of所指定的输出中写入 count * bs 的空间的数据。

    dd if=/dev/zero of=/opt/data bs=1 count=1 seek=20971520
    说明:
        if=/dev/zero 指定输入为/dev/zero,即用0填充
        of=/opt/data 写入到/opt/data文件
        bs=1 表示一次读写1个字节,如果不指定单位则默认为byte
        count=1 指定bs的数量,这里为1个bs
        seek 表示在向of指定的文件写入0时,略过文件前$seek * bs大小的空间,然后再写入
        bs * $count大小的数据
    

    实践

    seek指定数量,即dd帮助文档中提到的N

    示例一:

    说明:
    ls -k参数显示文件的字节数,这里显示20971521个字节。
    计算方式为:$seek * $bs(换算到byte) + $count * $bs(换算到byte),因此这里为:20971520 * 1 + 1 * 1 = 20971521byte,通过-h参数显示则为21M,为什么通过ls显示与通过du显示的结果不同呢,这就是稀疏文件(seek略过)的作用,稀疏文件仅是分配了一定数据量的空间,而实际占用没有这么多。

    示例二

    说明:
    字节数为:20971520 * 1 * 1024 + 20 * 1 * 1024 = 21474856960byte
    mydata文件略过前面的20971520K空间,实际写入数据的大小为20K,因此du命令看到的是20K

    示例三

    说明:
    字节数为:20971520 * 1 * 1024 = 21474836480,这里指定的count为0,表示不会向文件中写入数据,因此mydata2文件实际占用空间为0

    seek指定具体的大小,比如seek=2G, seek=200M
    文件字节计算方式:将seek指定的大小换算到字节(byte),此时该字节数就表示帮助文档中标识的N,接下来的计算方式同上。

    示例一

    说明:字节数为:10 * 1024 * 1024 * 1024 + 1 * 1 = 10737418241

    示例二

    说明:字节数为:2 * 1024 * 1024 * 1024 * 5 * 1024 + 20 * 5 * 1024 = 10995116380160

    示例三

    说明:字节数为:100 * 1024 * 1024 * 1024 * 2 * 1024 = 219902325555200,指定count为0,因此文件的实际大小为0

    结语

    以上则是对dd命令创建稀疏文件操作的实践记录,希望一起学习、交流。

    参考

    Linux "man dd"帮助文档

    相关文章

      网友评论

          本文标题:dd命令创建稀疏文件

          本文链接:https://www.haomeiwen.com/subject/hjsjyftx.html