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;
评论区