
在上篇中,我们梳理了 Linux 环境下文件误删恢复的基础原则与核心前置思路,也介绍了部分轻量恢复工具的应用场景与基础用法。本篇作为 Linux 数据安全系列的基础篇(中篇),将聚焦经典数据恢复工具 testdisk,深入拆解它的工作原理、安装部署方式与分区表修复实操流程,覆盖分区丢失场景下的数据恢复需求,帮你构建一套基础且可靠的 Linux 数据恢复工具链,为数据安全再加一道防线。
testdisk 是一款专业的分区级数据恢复工具,专注于分区表修复与文件系统元数据重建,是处理分区丢失、无法挂载场景的首选工具。
1.2 工具安装
✅安装步骤:(以下提供三种安装方式,可任选其一操作)
# CentOS/RHEL 系列(通过包管理器安装)# 安装EPEL扩展源,CentOS默认源无testdisksudo yum install -y epel-release# 安装testdisk包sudo dnf install testdisk -y
# Ubuntu/Debian 系列(通过包管理器安装)# 更新系统软件源索引,拉取最新软件列表sudo apt update# 安装testdisk包sudo apt install testdisk -y
# 在线下载官方稳定版源码包(源码编译安装)wget https://www.cgsecurity.org/testdisk-7.1.tar.bz2# 解压bz2格式源码压缩包tar -jxvf testdisk-7.1.tar.bz2# 进入解压后的源码目录cd testdisk-7.1# 检测系统环境、生成编译配置文件./configure# 编译源码make# 将编译好的程序安装到系统全局sudo make install
# 验证安装是否成功testdisk -- version

当误删分区、分区表损坏,导致整个文件系统丢失时,可使用 testdisk 恢复分区表。
2.1 实战环境准备:创建测试镜像
✅一键创建带数据的测试镜像,执行以下命令,快速生成一个带分区和测试文件的 testdisk.img 镜像:
# 1. 创建一个 100MB 的空镜像文件dd if=/dev/zero of=/tmp/testdisk.img bs=1M count=100# 2. 为镜像创建主分区(模拟正常分区表)fdisk /tmp/testdisk.img << EOFnp12048wEOF# 3. 挂载镜像分区并格式化为 ext4 文件系统losetup -fP /tmp/testdisk.imgmkfs.ext4 /dev/loop0p1# 4. 挂载分区并写入测试文件mkdir -p /mnt/testmount /dev/loop0p1 /mnt/testecho "TestDisk 测试文件,恢复成功" > /mnt/test/test.txttar -czf /mnt/test/test.tar.gz /mnt/test/test.txt# 5. 卸载并断开 loop 设备(此时镜像已包含分区和数据)umount /mnt/testlosetup -d /dev/loop0
输出结果:

✅模拟分区表损坏,可以执行以下命令清空分区表:
# 清空镜像的分区表(会导致系统无法识别分区)dd if=/dev/zero of=/tmp/testdisk.img bs=512 count=1 conv=notrunc
输出结果:

2.2 执行 testdisk 恢复分区表
✅以安全模式启动 testdisk,对 /tmp/testdisk.img 镜像文件进行分区恢复操作:
testdisk /tmp/testdisk.img✅testdisk 操作步骤(一步步演示):
选择目标磁盘:选中 /tmp/testdisk.img → 按 Enter

b.分区表类型:默认 Intel/PC → 按 Enter

c.进入分析模式:选择 Analyse → 按 Enter

d.快速搜索分区:选择 Quick Search → 按 Enter,等待扫描完成


e.写入分区表:确认识别到的分区 → 选择 Write → 输入 Y 确认



✅分区表损坏前(原始状态)
# 挂载镜像,查看正常文件系统mount -o loop,offset=1048576 /tmp/testdisk.img /mnt/test# 查看文件列表与内容(数据完好)ls /mnt/testcat /mnt/test/test.txt
输出结果:

✅分区表损坏后(数据 “丢失” 状态)
# 模拟分区表损坏(清空前512字节)dd if=/dev/zero of=/tmp/testdisk.img bs=512 count=1 conv=notrunc# 查看分区信息,无有效分区fdisk -l /tmp/testdisk.img
输出结果:

✅TestDisk 恢复完成后(数据找回状态)
# 重建分区表后,重新挂载镜像mount -o loop,offset=1048576 /tmp/testdisk.img /mnt/test# 再次查看文件列表与内容(数据完全恢复)ls /mnt/testcat /mnt/test/test.txt
输出结果:

综上,本次分区表损坏场景的数据恢复已成功完成,结果符合预期。testdisk 对 MBR 分区表损坏的 ext4 文件系统具备可靠的恢复能力。

