[转]Linux dd命令备份和恢复分区与磁盘、分区表、MBR等

Page from: http://blog.sina.com.cn/s/blog_70b8886401011q5j.html

1,查看磁盘挂载状态:df -h
2,开始备份磁盘分区,命令格式为:
dd if=“设备或文件名” of=“备份文件的路径”,下文示例的磁盘分区为/dev/sda1,挂载点为/boot,备份文件设定为/data2/boot.disk;

2,开始备份磁盘分区,命令格式为:
dd if=“设备或文件名” of=“备份文件的路径”,下文示例的磁盘分区为/dev/sda1,挂载点为/boot,备份文件设定为/data2/boot.disk;
dd if=/dev/sda1 of=/tmp/boot.disk
备份出来的文件甚至可以用mount 挂载:
mount -o loop /tmp/boot.disk /mnt

然后进入/boot 分区肆无忌惮的乱删一气……,重启机器,grub 找到vmlinuz 了……
如果是恢复和系统无关的分区,可以在工作模式下进行恢复,如果无法启动了,使用Linux启动盘进入救援模式:
切记,要选择挂载的硬盘为可读写。(如不想在救援模式挂载磁盘请看文尾的小top)
救援模式下,默认会将硬盘数据挂载到live CD 的/mnt/sysimage 目录。
这是当前的挂载点信息。
我们可以考虑chroot,也可以不做。
现在看看挂载信息。
恢复的时候用同样的命令格式,只是源和目标变了:
dd if=/tmp/boot.disk of=/dev/sda1
严重警告!如果你的恢复路径指定错误,比如说指定到/dev/sda2或者/dev/sda,那一场救援就会变成一场新的灾难,其他磁盘分区的数据会被抹掉!!!
磁盘MBR/分区表的备份恢复。
首先了解下磁盘的结构,前512K 的内容是MBR+分区表。
然后再执行dd 命令做备份时备份的对象是/dev/sda,而非具体分区,另需要加上参数bs=512 count=1.
bs=BYTES force ibs=BYTES and obs=BYTES
count=BLOCKS copy only BLOCKS input blocks
dd if=/dev/sda of=/tmp/mbr.disk bs=512 count=1
备份完成后用fdisk 删掉/dev/sda1 分区,重启后服务器肯定起不来了。同样用救援模式从光盘引导系统,新引导的系统已经没有/dev/sda1 了。
可选的环节,chroot
再次检查磁盘挂载情况;
恢复的时候是同样的命令返回来用,如果是单独恢复分区表,请将后缀参数改成bs=512 skip=446 count=66;
dd if=/tmp/mbr.disk of=/dev/sda bs=512 count=1
重启服务器,就会加载新的分区表并正常启动计算机,被我通过fdisk 删除的/boot 分区又出现出现了。如果还有磁盘的损坏,请重启后继续进入救援模式继续修复。
生产应用中的小技巧
1,利用jobs 队列将dd 扔到后台执行;
如果我们早有打算,在执行dd 命令的结尾加上“&”就直接将dd 扔到了后台执行,但
很多情况是当前窗口开始dd 一段时间以后,我们突然想断开shell 了。这种情况重新dd 是
挺可惜的,可以用下面的方法来将运行中的dd 扔到后台执行:
A. 首先按ctrl+z,暂停dd 的执行,回到shell 里。
B. 执行jobs,看看被你暂停掉的dd 命令的job id 是多少。如果之前你没有ctrl+z 暂停
过其他任务,则其job id 为1。
C. 使用bg + %{job id} 可以让暂停的进程在后台执行,使用fg + %{job id} 可以让暂
停的进程在前台执行。下面的实验中我们肯定是用后台执行了,执行完成后再看下jobs,状态已经变成running 了。
请注意上图中的“1”是job id,dd 进程的运行状态是running 了。
2,如果在后台运行的dd,我们想看看它的执行进度该怎么看哪?其实dd 的help 里已经提到了这个功能了:
[root@caotest-1 ~]# dd --help
…………
Sending a USR1 signal to a running `dd' process makes it
print I/O statistics to standard error and then resume copying.
英文我们看不太懂,那就看看实际执行的方法和结果吧。
首先我们用ps 命令找到dd 的pid,然后将pid 写到这个命令里就可以了
命令是: kill -USR1 {dd-pid}。
从输出内容里我们可以看到,现在已经复制了多少数据,以用了多少时间,当前的
速度是多少。
3,救援模式默认会挂载磁盘内系统的根分区,而且无法强制卸载,这个时候需要在引导linux
的时候就加上一个参数,进入救援模式的命令变成:
linux rescue nomount
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来回答你的问题。 MBR(Master Boot Record)分区表是存储在计算机硬盘的第一个扇区的一段数据,它记录了硬盘的分区信息和引导程序。如果MBR分区表遭到破坏或者丢失,会导致计算机不能正常引导,因此备份恢复MBR分区表非常重要。 以下是备份、删除和恢复MBR分区表的方法: 1. 备份MBR分区表 在Windows系统中,可以使用命令行工具diskpart来备份MBR分区表: 1)打开命令行窗口,输入diskpart并回车; 2)输入list disk并回车,查看硬盘编号; 3)输入select disk X(X为硬盘编号)并回车,选择要备份的硬盘; 4)输入list partition并回车,查看硬盘分区信息; 5)输入exit并回车,退出diskpart命令行工具; 6)使用命令行工具dd备份MBR分区表,例如:dd if=/dev/sda of=/home/user/mbr.backup bs=512 count=1。 备份完成后,会在/home/user目录下生成一个名为mbr.backup的文件,其中包含了MBR分区表的内容。 2. 删除MBR分区表 如果需要删除MBR分区表,可以使用命令行工具dd来实现: 1)打开命令行窗口,输入sudo fdisk -l并回车,查看硬盘分区信息; 2)输入sudo dd if=/dev/zero of=/dev/sda bs=446 count=1并回车,删除MBR分区表。 这条命令会将硬盘第一个扇区的前446个字节都设置为0,从而删除MBR分区表。但是要注意,这样会导致硬盘的所有数据丢失,因此在操作前一定要做好数据备份。 3. 恢复MBR分区表 如果MBR分区表丢失或者损坏,可以使用备份文件来恢复: 1)打开命令行窗口,输入sudo fdisk -l并回车,查看硬盘分区信息; 2)输入sudo dd if=/home/user/mbr.backup of=/dev/sda bs=512 count=1并回车,恢复MBR分区表。 这条命令会将备份文件中的MBR分区表内容写入硬盘的第一个扇区,从而恢复分区信息和引导程序。恢复完成后,可以重新引导计算机,如果一切正常,硬盘的分区信息将被正确读取,并且计算机能够正常启动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值