[转]Linux dd命令备份和恢复分区与磁盘、分区表、MBR等 您所在的位置:网站首页 dd辅助器的注意事项 [转]Linux dd命令备份和恢复分区与磁盘、分区表、MBR等

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

2024-07-08 07:03| 来源: 网络整理| 查看: 265

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


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有