dd 是 Unix 下安字节复制文件的工具。
常用参数:
if 指定源文件 of 指定目标文件 bs 指定块大小 count 指定复制块的数量 skip 读取跳过的块数量
制作引导软盘
dd if=bootdisk.img of=/dev/fd0
读取软盘内容
dd if=/dev/fd0 of=floppy.img
读取磁带,磁带前面 32k 是是磁带头信息,因此恢复数据时跳过前 32K:
dd if=/dev/nst1 bs=32k skip=1 of=dump_image.tar
写入磁带
dd if=dump_image.tar bs=32k of=/dev/nst1
dd 读写硬盘时,必须确保硬盘没有进程访问。因此建议将磁盘 umount 后再进行读写操作。
将硬盘分区整个备份到磁带中,假设文件系统的格式是 ext3,默认的 block size 为 4096:
备份磁盘
dd if=/dev/hda of=/dev/nst1 bs=4096
恢复磁盘
$ dd if=/dev/nst1 of=/dev/hda bs=4096
将硬盘分区备份到 image 文件,实现类似 Ghost 的功能:
备份磁盘
dd if=/dev/hda1 of=/backup/disk-boot.img bs=4096
恢复磁盘
dd if=/backup/disk-boot.img of=/dev/hda1 bs=4096
使用 dd 备份磁盘的最大缺陷是它不能识别空白的空间,因此如果硬盘分区有 10G,那么备份出来的文件大小就有 10G。备份出来的 img 文件可以使用 bzip2 等压缩工具压缩,在磁盘利用率不高的情况下能够有很高的压缩率。
有一些特殊的设备文件,例如 /dev/zero 代表一个永远输出 '0' 的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。
例如,创建大小为 500K 的新文件:
dd if=/dev/zero of=/tmp/a bs=1024 count=500
另外还可以用覆盖的方式清除文件、磁盘、磁带等设备,这种方式清除是不可能恢复的。例如,完全销毁磁带内容:
dd if=/dev/zero of=/dev/st1 bs=5M
硬盘的第 0 柱面 0 磁道 1 扇区(clindyer 0, side 0, sector 1) 共 512 字节为硬盘主引导扇区,包括:硬盘主引导记录(MBR)446 字节(0000–01BD),硬盘分区表(DPT)64 字节(01BE–01FD),结束标志 2 字节(55 AA)。
dd if=/dev/hda of=/etc/mbr.img bs=512 count=1
仅恢复 MBR,而保留新的分区表:
dd if=/etc/mbr.img of=/dev/hda bs=446 count=1
DOS 中需要借助其他工具来备份 MBR,但 fdisk 可以直接删除 MBR:
c:> fdisk /mbr
DPT 只能包含最多 4 个分区,为主分区和扩展分区。而所有逻辑分区在主引导扇区(DBR)中,位于硬盘的 1 柱面 0 磁道 1 扇区(clindyer 0, side 1, sector 1)中。
因为 DPT 的尺寸是不固定的,因此暂时没找到备份整个分区表的方法,不过可以用 fdisk -l 方式来备份分区信息。
Comments
There are currently no comments
New Comment