第3章:数据备份原则——修复前必须做的镜像备份
说实话,我见过太多人栽在这个环节上。
有一次,一个朋友拿了一块硬盘来找我,说分区表坏了,让我帮忙修。我问他备份了吗?他说没有。我说那我不敢动。他急了,说数据很重要。我理解他的心情,但说实话,没有备份就动手修复分区表,就像在悬崖边上走钢丝——一个不小心,数据就彻底没了。
所以这一章,我要跟你聊聊修复前必须做的镜像备份。这不是建议,是铁律。
为什么必须做镜像备份?
你想想看,分区表修复本质上是在修改磁盘的底层结构。一旦操作失误,轻则分区表更乱,重则数据永久丢失。我个人的习惯是:任何写操作之前,先做全盘镜像。
镜像备份的好处有三点:
- 安全第一:原始磁盘不动,所有操作在镜像上进行
- 可回退:搞砸了?删掉镜像,重新来一次
- 可重复:同一个镜像可以反复练习,直到找到正确方案
使用 dd 命令创建磁盘镜像
在 Linux 环境下,dd 命令是最常用的磁盘镜像工具。它简单、直接、可靠。我几乎每天都在用。
基本语法如下:
dd if=/dev/sdX of=/path/to/image.img bs=4M status=progress
参数说明:
| 参数 | 含义 | 说明 |
|---|---|---|
if |
输入文件 | 源磁盘设备,如 /dev/sda |
of |
输出文件 | 镜像文件路径,建议放在另一块硬盘上 |
bs |
块大小 | 我一般用 4M,速度较快 |
status=progress |
显示进度 | 实时看到拷贝了多少数据 |
举个例子,假设你的故障磁盘是 /dev/sdb,你想把镜像存到 /data/backup/sdb.img:
dd if=/dev/sdb of=/data/backup/sdb.img bs=4M status=progress
嗯,这里要注意:目标磁盘的空间必须大于等于源磁盘。如果源磁盘是 1TB,你的目标盘至少要有 1TB 的可用空间。
conv=noerror,sync 参数,跳过坏道继续拷贝。不过这样会丢失坏道处的数据,但总比卡死强。
校验镜像完整性
镜像做完了,你以为就完事了?不,还得校验。
我遇到过这种情况:镜像拷贝过程中,磁盘突然断电,或者 USB 线松了,结果镜像文件不完整。如果你直接拿这个不完整的镜像去修复,那等于白忙活。
校验方法很简单,用 md5sum 或 sha256sum 计算哈希值:
# 计算源磁盘的哈希值
sudo dd if=/dev/sdb bs=4M count=100 | md5sum
# 计算镜像文件的哈希值
md5sum /data/backup/sdb.img
两个哈希值一致,说明镜像完整。不一致?重新做。
不过说实话,全盘计算哈希值很慢。我个人的习惯是:只校验前 100MB 和后 100MB。因为分区表通常位于磁盘开头,而文件系统元数据可能在磁盘末尾。校验这两部分,基本能保证关键数据完整。
- 修复前必须做镜像备份,这是底线
- 使用 dd 命令创建全盘镜像,块大小推荐 4M
- 校验镜像完整性,确保数据无误
- 镜像文件存放在另一块健康的磁盘上
知识体系图
下面这张图展示了本章的核心逻辑:
这张图很直观:原始磁盘 → dd 命令 → 镜像文件 → 校验完整性 → 根据结果决定下一步。说白了,就是一条流水线,每一步都不能跳过。
避坑指南
最后,分享几个我踩过的坑:
- 镜像文件不要放在源磁盘上:这还用说吗?但真有人这么干。镜像写到一半,源磁盘坏了,镜像也没了。
- 注意磁盘顺序:dd 命令的 if 和 of 参数写反了,后果很严重。我曾经有一次差点把空文件写回源盘,还好及时 Ctrl+C 了。
- 大磁盘要耐心:2TB 的磁盘,用 4M 块大小,大概需要 3-4 小时。别急,让它跑着,你去喝杯咖啡。
- 校验不能省:我见过有人做完镜像直接开修,结果镜像不完整,修了半天发现数据全是乱的。白费功夫。
好了,这一章就到这里。记住:没有镜像,不动手。这是数据恢复的第一条铁律。
可可精品资料库