dd命令介绍
作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。可以用于测试磁盘命令、数据备份或恢复等。
dd 命令通用语法格式如下:
dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version]
主要选项(指定数字的地方若以下列字符结尾乘以相应的数字: b=512, c=1, k=1024, w=2, xm=number m)
if=file 输入文件名,缺省为标准输入。从file读取,如if=/dev/zero,该设备无穷尽地提供0,(不产生读磁盘IO)
of=file 输出文件名,缺省为标准输出。向file写出,可以写文件,可以写裸设备。如of=/dev/null,"黑洞",它等价于一个只写文件,所有写入它的内容都会永远丢失(不产生写磁盘IO)
ibs=bytes 一次读入bytes个字节(即一个块大小为bytes个字节)。
obs=bytes 一次写bytes个字节(即一个块大小为bytes个字节)。
bs=bytes 同时设置读写块的大小为bytes,可代替ibs和obs。如bs=8k每次读或写的大小,即一个块的大小为8K。
cbs=bytes 一次转换bytes个字节,即转换缓冲区大小。
skip=blocks 从输入文件开头跳过blocks个块后再开始复制。
seek=blocks 从输出文件开头跳过blocks个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。
count=blocks 仅拷贝blocks个块,块大小等于ibs指定的字节数。
iflag=FLAGS 指定读的方式FLAGS,参见“FLAGS参数说明”
oflag=FLAGS 指定写的方式FLAGS,参见“FLAGS参数说明”
conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
清空磁盘分区信息(谨慎使用)
dd if=/dev/zero of=/dev/sdb bs=512K count=20
整盘备份sda到sdb
dd if=/dev/sda of=/dev/sdb
备份/dev/sda全盘数据,并利用gzip工具进行压缩,保存到指定路径
dd if=/dev/sda | gzip > /path/tmp/image.gz
将备份文件恢复到指定盘
if=/path/tmp/image of=/dev/sda
将压缩的备份文件恢复到指定盘
gzip -dc /path/tmp/image.gz | dd of=/dev/sda
生成一个大小为5G的空文件
dd if=/dev/zero of=tmp.5G bs=1G count=5