1.简介

Linux dd命令用于读取、转换并输出数据。

dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

简单来说,dd命令可以用于:

  1. 磁盘数据备份与恢复

  2. 拷贝内存资料到硬盘

  3. 从光盘拷贝iso镜像

  4. 格式化磁盘数据

  5. 测试硬盘读写速度

  6. 生成一个大文件(用于测试或者模拟磁盘满的异常情况)

 

2. 参数详解

输入: dd --help

 

if=文件名:输入文件名,默认为标准输入。即指定源文件。
of=文件名:输出文件名,默认为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=<关键字>,关键字可以有以下11种:
conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。--help:显示帮助信息--version:显示版本信息

 

3. 实战应用

3.1 数据备份恢复与擦除

1)备份一个磁盘数据到另外一个磁盘

#这里将/dev/hdb的数据恢复到/dev/hdd,有点像cp命令dd if=/dev/hdb of=/dev/hdd

2) 恢复文件到某个磁盘

#这里将/root/image文件至/dev/hdb,即用/root/image填充/dev/hdbdd if=/root/image of=/dev/hdb

3)拷贝光盘数据到本地

#这里是从光盘(linux盘符为/dev/cdrom)拷贝到本地文件/root/cd.iso中dd if=/dev/cdrom of=/root/cd.iso

4)内存数据导出到硬盘

#这里把内存数据(/dev/mem对应内存)导出到本地文件/root/mem.bin,指定块(bs)大小为1Mdd if=/dev/mem of=/root/mem.bin bs=1024

5)格式化磁盘数据

#使用随机化数据(/dev/urandom提供随机字符)填充/dev/hda这块磁盘dd if=/dev/urandom of=/dev/hda

 

3.2 测试常用技巧

1)生成一个指定大小的大文件

#生成一个10G的文件dd if=/dev/zero of=/root/file4test bs=1024 count=1048576

 

2)用于测试磁盘满时候,应用的异常处理

#比如当前应用的数据挂载在/dev/sdc盘,此盘大小为20G,要测试磁盘满的时候,应用写不进去数据这种情况下的表现(异常场景)dd if=/dev/zero of=/root/file4test bs=1024 count=2097152

 

3)磁盘性能测试(用于测试不同块大小情况下的读写性能)

#bs=4k下:写测试 
dd if=/dev/zero of=test_write_file_4k bs=4k count=262144 #bs=4k下:读测试 
dd if=test_write_file_4k of=/dev/null bs=4k 

#bs=1m下:写测试dd if=/dev/zero of=test_write_file_1m bs=1m count=10240 #bs=1m下:读测试 
dd if=test_write_file_1m of=/dev/null bs=1m 

#bs=1m下:读写测试 。1.先生成文件test_read_file_1m  
dd if=/dev/zero of=test_read_file_1m  bs=1m 

#2.测试读写性能 
dd if=test_read_file_1m  of=test_write_file_1m bs=1m

 

说明:

  1. dd命令执行过程是顺序IO,而不是随机IO,只能粗略模拟磁盘读写场景

  2. if=/dev/zero不产生IO,因此可以用来测试纯写速度

  3. of=/dev/null不产生IO,可以用来测试纯读速度


博主:测试生财

座右铭:通过测试生涯完成原始积累,通过投资奔向财务自由

csdn:https://blog.csdn.net/ccgshigao

博客园:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374