免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sfrost
打印 上一主题 下一主题

关于用dd备份或恢复分区表,有个问题? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-11-29 16:21 |只看该作者
count=BLOCKS
              copy only BLOCKS input blocks

ibs=BYTES
              read BYTES bytes at a time

seek=BLOCKS
              skip BLOCKS obs-sized blocks at start of output

skip=BLOCKS
              skip BLOCKS ibs-sized blocks at start of input

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2010-11-29 16:39 |只看该作者
难道dd命令也会基于块大小为512的前提下在of文件中跳过446个块将你复制的66个覆盖进去

这个是肯定的。dd同时控制输入和输出。if和of
Input File
Output File
这也体现了Linux中的虚拟文件系统的强大之处。

论坛徽章:
0
13 [报告]
发表于 2010-11-29 16:40 |只看该作者
支持一下。。

论坛徽章:
0
14 [报告]
发表于 2010-11-29 17:25 |只看该作者
我不用dd来备份,我只这么干:

sfdisk -d /dev/sdx > partition_table

sfdisk /dev/sdx < partition_table

论坛徽章:
0
15 [报告]
发表于 2010-11-29 17:46 |只看该作者
这个是肯定的。dd同时控制输入和输出。if和of
Input File
Output File
这也体现了Linux中的虚拟文件系 ...
L_kernel 发表于 2010-11-29 16:39


非常感谢,我会去试试的。照这样说,这命令就TM太好用了,哈哈!

招聘 : 技术支持/维
论坛徽章:
0
16 [报告]
发表于 2010-11-29 18:21 |只看该作者
而且,bs=512有点类似于文件系统在对磁盘进行格式化时选择的block大小,是吧?

这个跟磁盘的block没关系。
而备份分区表的时候,复制了512字节。在恢复的时候,要单独恢复mbr中的分区表,就跳过[skip=446]mbr中的引导部份,复制剩下的64+2字节,以此来恢复分区表信息,是吧?

其实这个命令是错的。
恢复分区表:
dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66

你回覆分区表的时候,单位是 512 字节,skip 了 446 个 512字节,你一共才dd了512个字节,明白为什么错了吧!
改成 bs=1 ,skip=446。
同时还得加上 seek=446,seek 的含义你man一下吧。
那就剩最后一个问题了:单独恢复分区表信息,通过skip=446跳过输入文件的前446字节,然后开始复制64+2字节,复制的内容会放在of文件的哪个位置?

这个问题你应该也知道了。

顺便提醒一下,这种方式只能备份主分区表。

论坛徽章:
0
17 [报告]
发表于 2010-11-29 19:15 |只看该作者
本帖最后由 taojie2000 于 2010-11-29 19:16 编辑

回复 17# nagaregawa


    刚那还原出错的地方 seek  skip  同时要有吗?

    恢复时候直接  seek   不用再skip了吧?

招聘 : 技术支持/维
论坛徽章:
0
18 [报告]
发表于 2010-11-29 22:15 |只看该作者
回复 18# taojie2000


    个人认为都要用!skip 和 seek 管的是不同的地方。

论坛徽章:
0
19 [报告]
发表于 2010-11-30 10:30 |只看该作者
回复 19# nagaregawa
你回覆分区表的时候,单位是 512 字节,skip 了 446 个 512字节,你一共才dd了512个字节,明白为什么错了吧!
改成 bs=1 ,skip=446。
同时还得加上 seek=446,seek 的含义你man一下吧。

就是这个意思了,哈哈,还好我又上来看了下。
还有啊,这个例子不是我的,是网上到处都搜得到的,我只是觉得有点问题,所以就上来问了,毕竟书上只说了备份,没说还原。不过目前按你这样说的,我基本上懂了,而且skip和seek肯定都要用,因为一个管if,一个管of的。

我昨天已经man了看了,而且我当时其实还有个疑问,那就是dd里面的bs,skip,seek的单位,都是字节吗?bs就不说了,因为man里面很清楚:bs=bytes,但是skip和seek却是blocks,而它的解释就是:skip blocks obs-sized blocks at start of output。抱歉,英语不会,只得再看obs和ibs,结果还是bytes,呵呵。

麻烦能否再帮忙解释一下这个单位方面的问题?是否dd的单位都是字节?而skip/ibs和seek/obs是否有某种意义上的关系?还是?

论坛徽章:
0
20 [报告]
发表于 2010-11-30 10:45 |只看该作者
回复 17# nagaregawa
顺便提醒一下,这种方式只能备份主分区表。

应该把if=/dev/sda1改为if=/dev/sda,也就是整个磁盘的分区表了,是吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP