Linux-dd命令详解
dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
参数帮助;
dd --help info dd
命令格式:输入或输出
dd if=[STDIN] of=[STDOUT] bs=[] count=[]
语法:dd [选项]
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
cbs = byte 一次转换bytes字节。
count=blocks 只拷贝输入的blocks块。
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填充)。
在对存储或磁盘测试时,dd是一个很简单快捷的工具
例1: [[email protected] ~]# fdisk -l /dev/sde
Disk /dev/sde: 16.1 GB, 16106127360 bytes 255 heads, 63 sectors/track, 1958 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
对盘做IO测试:
time dd if=/dev/sdb of=/dev/null bs=10M count=1000 1000+0 records in 1000+0 records out 10485760000 bytes (10 GB) copied, 64.4122 s, 163 MB/s real 1m4.414s user 0m0.003s sys 0m11.885s
则MBPS=10G/64s=0.15GB/s
注意对于使用正在使用的盘不要用dd命令执行写测试,因为它是侵入式的,破坏磁盘
例2:创建一个1000M的空文件
[[email protected] tmp]# dd if=/dev/zero of=aa.tx bs=10M count=1000 1000+0 records in 1000+0 records out 10485760000 bytes (10 GB) copied, 6.66983 s, 1.6 GB/s real 0m6.678s user 0m0.003s sys 0m6.674s
=============================================
/dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着! /dev/zero,是一个输入设备,你可你用它来初始化文件。
/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。 /dev/zero------该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
利用这个命令可以简单测试评估网络的连通性:
[[email protected] /tmp] scp /dev/aa.txt 172.16.131.32:`pwd` aa.txt 13% 1334MB 112.3MB/s 01:17 ETA
说明:以上的两个方法使用比较简单,在怀疑IO存在问题时,可以快速判断
例3:数据库上dd更多用于清除磁盘头信息,类似的命令是: