dd命令使用总结

dd命令介绍

dd是Linux下一个非常有用的命令,该命令用于读取、转换并输出数据;dd命令在Android shell下也支持使用。
语法格式:

dd   [option]

dd指令选项详解
if=file:输入文件名,缺省为标准输入
of=file:输出文件名,缺省为标准输出
ibs=bytes:一次读入 bytes 个字节(即一个块大小为 bytes 个字节)
obs=bytes:一次写 bytes 个字节(即一个块大小为 bytes 个字节)
bs=bytes:同时设置读写块的大小为 bytes ,可代替 ibs 和 obs
cbs=bytes:一次转换 bytes 个字节,即转换缓冲区大小
skip=blocks:从输入文件开头跳过 blocks 个块后再开始复制
seek=blocks:从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)
count=blocks:仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数
conv=ASCII:把EBCDIC码转换为ASCIl码。
conv=ebcdic:把ASCIl码转换为EBCDIC码。
conv=ibm:把ASCIl码转换为alternate EBCDIC码。
conv=block:把变动位转换成固定字符。
conv=ublock:把固定位转换成变动位。
conv=ucase:把字母由小写转换为大写。
conv=lcase:把字母由大写转换为小写。
conv=notrunc:不截短输出文件。
conv=swab:交换每一对输入字节。
conv=noerror:出错时不停止处理。
conv=sync:把每个输入记录的大小都调到ibs的大小(用NUL填充)。

Android shell中可支持的常用命令参数

  1. if=文件名:输入文件名,即指定源文件。
    /dev/zero主要是用来创建一个指定长度用于初始化的空文件, 一般需要创建空文件的时候if参数值都会设置为此项哦!
  2. of=文件名:输出文件名,即指定目的文件。
  3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes字节。
    obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes字节。
    bs=bytes:同时设置读入/输出的块大小为bytes字节。
  4. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
  5. 关于conv参数的使用
    conv=ASCII:把EBCDIC码转换为ASCIl码。
    conv=ebcdic:把ASCIl码转换为EBCDIC码。
    conv=ibm:把ASCIl码转换为alternate EBCDIC码。
    conv=block:把变动位转换成固定字符。
    conv=ublock:把固定位转换成变动位。
    conv=ucase:把字母由小写转换为大写。
    conv=lcase:把字母由大写转换为小写。
    conv=notrunc:不截短输出文件。
    conv=swab:交换每一对输入字节。
    conv=noerror:出错时不停止处理。
    conv=sync:把每个输入记录的大小都调到ibs的大小(用NUL填充)。

Linux系统下可支持的常用命令参数

在这里插入图片描述
在Linux系统下,除了上述五个参数可以使用外,还有其他参数可用

iflag=FLAGS:指定读的方式FLAGS,参见“FLAGS参数说明”
oflag=FLAGS:指定写的方式FLAGS,参见“FLAGS参数说明”
FLAGS参数说明:
append -append mode (makes sense only for output; conv=notrunc sug-gested)
direct:读写数据采用直接IO方式;
directory:读写失败除非是directory;
dsync:读写数据采用同步IO;
sync:同上,但是针对是元数据
fullblock:堆积满block(accumulate full blocks of input )(iflag only);
nonblock:读写数据采用非阻塞IO方式
noatime:读写数据不更新访问时间

示例:
测试纯写入性能
dd if=/dev/zero of=test bs=8k count=10000 oflag=direct
测试纯读取性能
dd if=test of=/dev/null bs=8k count=10000 iflag=direct

注意事项

1、指定数字的地方若以下列字符结尾乘以相应的数字:
b=512, c=1, k=1024, w=2, xm=number m,
kB=1000,K=1024,MB=10001000,M=10241024,GB=100010001000,G=102410241024

2、读写性能的准确性
dd if=/dev/zero of=test bs=64k count=16k 是不准确的,
而 dd if=/dev/zero of=test bs=64k count=16k conv=fsync 比较准备,他在dd结束前会写到磁盘,
而dd if=/dev/zero of=test bs=64k count=4k oflag=dsync或者sync 是真正的每写一次就写一次磁盘

3、如何绕开cache
如果要规避掉文件系统cache,直接读写,不使用buffer cache,需做这样的设置
iflag=direct,nonblock
oflag=direct,nonblock
iflag=cio
oflag=cio
direct 模式就是把写入请求直接封装成io 指令发到磁盘
非direct 模式,就把数据写入系统缓存,然后就认为io 成功,并由操作系统决定缓存中的数据什么时候被写入磁盘

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆鳞_Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值