首先使用fdisk -l 确定MBR位置。
备份MBR:
dd if=/dev/sda1 of=/root/mbr bs=512 count=1
恢复MBR:
dd if=/root/mbr of=/dev/sda1 bs=512 count=1
恢复分区表:
dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66
注:mbr大小512 所以bs=512 count=1
bs=512 skip=446 count=66 用来确定分区表在备份文件中的位置
难道dd命令也会基于块大小为512的前提下在of文件中跳过446个块将你复制的66个覆盖进去
而且,bs=512有点类似于文件系统在对磁盘进行格式化时选择的block大小,是吧?
而备份分区表的时候,复制了512字节。在恢复的时候,要单独恢复mbr中的分区表,就跳过[skip=446]mbr中的引导部份,复制剩下的64+2字节,以此来恢复分区表信息,是吧?
恢复分区表:
dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66
那就剩最后一个问题了:单独恢复分区表信息,通过skip=446跳过输入文件的前446字节,然后开始复制64+2字节,复制的内容会放在of文件的哪个位置?
你回覆分区表的时候,单位是 512 字节,skip 了 446 个 512字节,你一共才dd了512个字节,明白为什么错了吧!
改成 bs=1 ,skip=446。
同时还得加上 seek=446,seek 的含义你man一下吧。
顺便提醒一下,这种方式只能备份主分区表。
应该把if=/dev/sda1改为if=/dev/sda,也就是整个磁盘的分区表了,是吧?
麻烦能否再帮忙解释一下这个单位方面的问题?是否dd的单位都是字节?而skip/ibs和seek/obs是否有某种意义上的关系?还是?
逻辑分区表怎么备份呢?不会是接着512字节后面的内容吧?而且不同的系统,逻辑分区的数量都不一样,怎么来确定和备份呢?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |