Ubuntu 误删分区的恢复步骤
一 操作前的关键准备
- 立刻停止在受影响磁盘上的一切写入操作(下载、解压、缓存、日志、安装等),优先将恢复操作放在Live CD/USB环境中进行,避免系统自动挂载写入导致覆盖。
- 备份当前磁盘的分区表/MBR/GPT信息,便于回滚:例如使用命令备份 MBR(仅限传统 MBR 磁盘)
sudo dd if=/dev/sda of=mbr_backup.bin bs=512 count=1,以及使用 sudo sfdisk -d /dev/sda > sda_partition_backup.txt 备份分区表。
- 准备一个容量足够的外部磁盘用于拷贝恢复出的数据。
- 重要数据建议先做整盘镜像再操作:
sudo dd if=/dev/sda of=/path/to/image.img bs=4M status=progress(仅在确认磁盘空间充足且不影响恢复时使用)。
- 恢复成功率取决于是否发生覆盖,越早开始越好。
二 使用 TestDisk 恢复分区表(优先方案)
- 安装并启动:
sudo apt update && sudo apt install -y testdisk,然后执行 sudo testdisk。
- 选择磁盘设备(如 /dev/sda),日志选择 Create。
- 选择分区表类型:常见为 Intel/PC(MBR)或 EFI GPT(GPT)。
- 进入 Analyse,先做 Quick Search;未找到则做 Deeper Search。
- 在列表中找到被删除的分区(通常标记为 D),用方向键选中后用 P 预览关键目录/文件以核对大小与位置是否正确。
- 选中需要恢复的分区,按 Enter 标记为 “*”(引导/激活),再选择 Write 将分区表写回磁盘,按 Y 确认,退出并重启。
- 系统识别分区后,手动挂载验证:
sudo mkdir -p /mnt/recovered && sudo mount /dev/sda2 /mnt/recovered && ls /mnt/recovered。
- 若分区已恢复但系统仍无法启动,可使用 Boot-Repair 进行引导修复:
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt update && sudo apt install -y boot-repair && boot-repair,选择“推荐修复”。
三 分区无法写回或仅文件被删除时的替代方案
- 使用 extundelete(仅限 ext3/ext4):先确保目标分区未挂载或只读挂载,然后恢复:
- 恢复单个文件:
sudo extundelete /dev/sdXY --restore-file /path/to/file
- 恢复全部可恢复文件:
sudo extundelete /dev/sdXY --restore-all
将 /dev/sdXY 替换为实际分区(如 /dev/sda2),恢复文件会输出到当前工作目录的 RECOVERED_FILES 中。
- 使用 PhotoRec(文件级恢复,不依赖分区表):
sudo apt install -y testdisk(包含 photorec),运行 sudo photorec,选择磁盘/分区与文件类型,指定输出目录到外部磁盘,开始扫描并恢复。
- 使用 foremost:
sudo apt install -y foremost,执行 sudo foremost -i /dev/sdX -o /path/to/output(注意是对整盘或分区镜像操作,输出目录需在其他磁盘)。
四 常见问题与修复
- 分区找回但系统无法启动:多为 GRUB/引导文件缺失,使用 Boot-Repair 一键修复或在 Live 环境中重装 GRUB。
- 分区表类型选错:TestDisk 中可退回重新选择 Intel/EFI GPT 再次分析。
- 深度扫描耗时较长:耐心等待,不要中断;扫描结果务必用 P 预览核对。
- 恢复后文件系统报错:先尝试
sudo fsck -y /dev/sdXY 检查修复;若仍异常,考虑从备份恢复或再做镜像后尝试其他工具。
五 预防与后续建议
- 定期做系统/分区快照与备份(如 Timeshift、Deja Dup),重要数据多副本离线/异地保存。
- 分区调整、格式化等高风险操作前先备份分区表与关键数据。
- 避免在疑似故障磁盘上安装软件、下载大文件或执行会写入的操作。
- 对关键业务环境,建议准备可启动的救援介质与定期演练恢复流程。