dd
是一个 Unix 和类 Unix 系统上的命令,主要功能为转换和复制文件。
在 Unix 上,硬件的设备驱动(如硬盘)和特殊设备文件(如 /dev/zero
和 /dev/random
)就像普通文件一样,出现在文件系统中;只要在各自的驱动程序中实现了对应的功能,dd
也可以读取自 /
或写入到这些文件。这样,dd
也可以用在备份硬件的引导扇区、获取一定数量的随机数据等任务中。dd 程序也可以在复制时处理数据,例如转换字节序、或在 ASCII 与 EBCDIC 编码间互换。
相对
cp
命令来说,cp
命令是在文件系统层次接口的复制,而dd
是在块层次接口的复制,效率更高。
它的使用也很简单,格式如下:
dd if=<SOURCE> of=<DEST>
SOURCE:源文件;
DEST:目标文件;
它还有一些常用选项:
bs=#
:Block size,复制单元大小,单位为字节;count=#
:复制多少个 bs;
常见用法:
- 磁盘复制,如
dd if=/dev/sda of=/dev/sdb
就是将/dev/sda
中的数据拷贝到/dev/sdb
磁盘中,效率比cp
命令更高; - 备份 MBR,如
dd if=/dev/sda of=/tmp/sda_mbr.bak bs=512 count=1
就是将磁盘的前 512 字节备份到指定文件; - 清除 MBR,即清空了磁盘的分区表,
dd if=/dev/zero of=/dev/sda bs=1 count=512
; - 破坏磁盘的主引导程序,如果仅覆盖磁盘的前 446 字节,则就破坏了磁盘 MBR 中的主引导程序,如
dd if=/dev/zero of=/dev/sda bs=256 count=1
;
MBR 总大小为 512 字节,主要由三部分组成:
1.主引导程序代码,占 446 字节;
2.硬盘分区表 DPT,占 64 字节;
3.主引导扇区结束标志AA55H
;
评论区