
在上篇 Linux 数据恢复系列中,我们梳理了文件误删恢复的基础原则与前置思路,也介绍了 testdisk 在分区表修复、文件系统元数据重建上的能力。本篇作为 Linux 数据安全系列的基础篇(下篇),将聚焦与 testdisk 配套的核心工具 ——photorec,从原理、安装到完整实操流程,拆解它如何通过文件签名级扫描,在误删、格式化、文件系统损坏等场景下找回数据,帮你补齐 Linux 数据恢复的关键能力。
1.1 工具简介
PhotoRec 是一款专业的文件级数据恢复工具,专注于文件头特征扫描与文件内容重建,是处理分区丢失、文件误删、格式化场景的首选工具。
1.2 工具安装(与 TestDisk 同包)
PhotoRec 与 TestDisk 打包在一起,安装 TestDisk 即自动拥有 PhotoRec。
✅安装步骤:(以下提供三种安装方式,可任选其一操作)
# 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
# 验证安装是否成功photorec --version

PhotoRec 通过文件签名而非文件系统元数据来恢复文件,适用于文件系统严重损坏的场景。
2.1 实战环境准备:创建测试镜像
✅一键创建带数据的测试镜像,执行以下命令,生成一个带测试文件的 photorec.img 镜像:
# 1. 创建 100MB 测试镜像dd if=/dev/zero of=/tmp/photorec.img bs=1M count=100# 2. 格式化镜像文件为 ext3mkfs.ext3 /tmp/photorec.img# 3. 挂载镜像并写入测试文件mkdir -p /mnt/recovermount /tmp/photorec.img /mnt/recoverecho "PhotoRec 测试文件,恢复成功" > /mnt/recover/recover.txtcp /mnt/recover/recover.txt /mnt/recover/bak.txt# 4. 模拟误删文件rm -f /mnt/recover/recover.txtsync# 5. 卸载镜像umount /mnt/recover# 6. 验证已卸载mount | grep photorec
输出结果:

2.2 PhotoRec 恢复误删文件
✅启动 PhotoRec 并选择目标镜像,执行以下命令启动工具:
photorec /tmp/photorec.img✅PhotoRec操作步骤(一步步演示):
选择磁盘 / 镜像:选中 /tmp/photorec.img → 按 Enter。

b. 选择文件系统:选择 Ext2/Ext3/Ext4 → Enter(不确定就选 Other,兼容所有格式)。


c. 选择扫描范围:Free: 只扫空闲空间(速度快,适合刚删除);Whole: 全盘扫描(适合格式化、严重损坏)。

d. 设置恢复保存路径:按 Left/Right 切换目录;建议选择与源磁盘不同的位置,避免覆盖;定位到目标目录后,按 C 确认。



2.3 验证恢复结果
为了直观验证文件是否成功恢复,分别查看删除前、误删后、恢复后的文件状态:
# 1. 挂载镜像(这是关键,挂载后文件才会出现)mount /tmp/photorec.img /mnt/recover# 2. 执行 ls 查看文件列表ls /mnt/recover# 3. 执行 cat 查看文件内容cat /mnt/recover/recover.txt
输出结果:

✅ 文件误删后(数据 “丢失” 状态)
# 模拟误删文件rm -f /mnt/recover/recover.txtsync# 卸载镜像,防止后续写入覆盖数据umount /mnt/recover# 此时重新挂载镜像,文件已“消失”mount /tmp/photorec.img /mnt/recoverls /mnt/recover
输出结果:

✅ 文件恢复后(数据找回状态)
# 恢复完成后,查看恢复目录中的文件ls /demo/RECOVERED_FILES/recup_dir/# 验证恢复文件的内容cat /demo/RECOVERED_FILES/recup_dir/f0000001.txt
输出结果:

综上,本次误删文件恢复成功,PhotoRec 可通过扫描文件签名找回丢失数据,恢复效果可靠,适用于常见数据恢复场景。

