最近更新时间:2025-11-10 16:07:41
本文档详细介绍了在 Linux 环境下,使用开源工具 TestDisk 恢复因误操作而删除的分区的标准操作流程。适用于公有云服务器中,在分区表(如 MBR 或 GPT)被破坏但分区数据未被覆盖的场景。遵循本指南可以最大化数据恢复的成功率,并最小化因操作不当导致的二次损坏风险。
云计算运维工程师
系统管理员
具备 Linux 命令行基础、需要执行数据恢复的技术人员
核心原则:立即停止写入操作,并尽可能创建磁盘快照进行操作。
(1)立即停止写入:确认误删除后,务必卸载该磁盘对应的所有文件系统,并停止任何可能向该磁盘写入数据的服务或操作。新的写入操作可能会覆盖原有分区数据,导致数据丢失。
(2)评估重要性:如果数据极其重要,强烈建议先对整个磁盘创建快照或者主机镜像,如磁盘已具备快照可通过快照直接回滚。这是最安全的标准操作流程。
(3)理解风险:数据恢复存在不确定性。尽管 TestDisk 非常强大,但并非总能 100% 成功。操作前请做好心理准备。
步骤一:vdb硬盘现存vdb1分区,写入10个文件
步骤二:此时已删除vdb1分区
首先,使用 lsblk、fdisk -l或 parted -l命令确认当前磁盘和分区的状态,识别出被误删分区的磁盘(例如 /dev/vdb)。
# 查看块设备列表,确认丢失分区的磁盘
lsblk
# 查看详细分区信息,通常会显示“fdisk: 打不开 /dev/vdb1: 没有那个文件或目录”等警告
sudo fdisk -l /dev/vdb1参考此文档对硬盘创建极速可用快照https://docs.ksyun.com/documents/5351?type=3
根据您的 Linux 发行版安装 TestDisk。
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install testdiskCentOS/RHEL/Rocky Linux/AlmaLinux:
# 需要先启用 EPEL 仓库
sudo yum install -y epel-release
# 或对于 DNF 的新版本
sudo dnf install -y epel-release
sudo yum install -y testdisk
# 或
sudo dnf install -y testdisk以下操作假设您直接在原盘(/dev/vdb)上操作。如果使用了磁盘镜像,请将 /dev/vdb替换为您的镜像文件路径。
以 root 权限启动 TestDisk 并指定磁盘:
sudo testdisk /dev/vdb如下图显示TestDisk 已经成功启动,选择下方Proceed(继续):确认对当前选中的磁盘(/dev/vdb)进行操作
底部的文字强调,磁盘容量必须被正确检测是成功恢复数据的关键。这说明当前检测到的 1073MB 容量是准确的。
出现以下提示代表终端窗口过小,放大窗口即可,如无出现跳过此步。
TestDisk 启动后,会显示一个界面让你选择分区表类型。通常它会自动检测,按Enter进行下一步。
Intel:用于传统的 MBR 分区表。
EFI GPT:用于较新的 GPT 分区表。
根据您的磁盘类型选择,我这里环境为MBR分区表。如果不确定,可以尝试默认的 [Intel]并按 Enter。
在下一个菜单中,选择 [Analyse]来检查当前的分区结构和搜索丢失的分区。
参数提示:
[ Analyse ] 分析当前的分区结构并搜索丢失的分区。(分析 - 最常用、最安全的第一步)
[ Advanced ] 提供针对文件系统的实用工具。
[ Geometry ] 更改磁盘的几何参数(柱面、磁头、扇区数)。
[ Options ] 修改一些程序运行时的选项,比如显示哪些文件类型。
[ MBR Code ] 将 TestDisk 的 MBR 代码写入磁盘的第一个扇区。
[ Delete ] 删除分区表中的所有数据。
可能会出现下图TestDisk 在初始阶段没有在磁盘 /dev/vdb上检测到任何有效的分区表或检查出分区的信息。两种情况都继续执行[Quick Search] 。TestDisk 会快速扫描磁盘的空闲区域,寻找丢失的分区的引导扇区(如 NTFS 的 $Boot 或 EXT4 的 Superblock)。
可能会弹出一个确认信息, Continue 回车确认。
使用 Up/Down方向键高亮选择第一个找到的分区,按Enter进行下一步。
快速搜索完成后,TestDisk 会列出所有找到的分区,包括当前存在的和已删除的开始块和结束块等信息
按 Enter可以进一步查看该分区的详细信息(如文件系统类型、大小等),以帮助确认这是否是你要恢复的分区。
按 P键可以列出该分区内的文件(对某些文件系统如 EXT3/4, FAT, NTFS 有效)。这是验证分区内容是否正确的最可靠方法。
如果快速搜索没有找到所有丢失的分区,或者结果不理想,可以:
在主菜单选择 [Deeper Search],它会进行更全面但也更慢的扫描。
当确认所有需要恢复的分区都已正确列出,并且通过 P键查看文件内容无误后,选择 [Write]并按 Enter。
TestDisk 会要求你确认,输入 Y并回车,将新的分区表信息写入磁盘。
(1)写入成功后,按 Q多次退出 TestDisk。
(2)重要:为了让内核重新读取分区表,你需要重启云服务器,或者使用 partprobe命令(如果支持且安全的话)。
sudo partprobe /dev/vdb(3)再次使用 lsblk或 fdisk -l命令检查分区是否已经恢复。
lsblk /dev/vdb
fdisk -l检查文件系统:恢复分区后,分区本身的文件系统可能因为不正常的卸载而损坏。在挂载前,建议使用 fsck进行检查和修复。
sudo fsck -y /dev/vdb1
sudo mount /dev/vdb1 /home/test # 挂载磁盘
ls -la /home/test/ #检查文件是否恢复
纯净模式
