对于Linux用户而言,PhotoRec是一款完全免费、无需图形界面即可高效恢复照片和常见文件的数据恢复工具,它通过扫描存储介质底层数据签名来工作,甚至能应对误格式化或分区表损坏的场景。
Linux PhotoRec 怎么用?小白也能上手的完整操作指南
安装步骤:Ubuntu/Debian/CentOS 通用流程
PhotoRec 通常与 TestDisk 打包在一起,多数 Linux 发行版官方源中都包含它,安装方式非常统一:
- Ubuntu / Debian 系
打开终端,执行sudo apt update && sudo apt install testdisk,这个过程会同时安装 PhotoRec 和 TestDisk,两个工具共享同一个安装包。 - CentOS / RHEL 系
需要先启用 EPEL 源,然后运行sudo yum install epel-release && sudo yum install testdisk,如果使用 dnf,则替换为dnf install。 - Arch Linux
直接sudo pacman -S testdisk即可。
安装完成后,在终端输入 sudo photorec 就能启动,注意,恢复操作需要读取原始设备,因此必须使用 root 权限。
基本操作流程:三步走
PhotoRec 的运行逻辑非常清晰,全程通过方向键和回车键交互,即使没有图形界面也能轻松完成:
- 选择存储介质
启动后首先看到磁盘列表,用方向键选中你要恢复数据的硬盘或U盘,按回车确认,如果设备是分区表损坏的状态,直接选择整个磁盘而非某个分区。 - 选择分区或未分配空间
接下来会列出该磁盘上的所有分区,如果你要恢复刚删除的文件,优先选择该分区;如果分区已经丢失或显示为“Unknown”,则选择整个磁盘的未分配空间,PhotoRec 会跳过正常文件系统,直接扫描底层数据。 - 选择文件类型并开始恢复
程序会询问你要恢复哪些文件类型,默认情况下,它会扫描所有常见格式(照片、文档、压缩包等),如果你只想恢复照片,可以进入“File Opt”菜单,取消勾选其他类型,只保留 JPEG、RAW、PNG 等,最后选择恢复文件的存放路径(建议保存在另一个磁盘,避免覆盖原有数据),按回车后开始扫描。
命令行选项进阶
除了交互模式,PhotoRec 也支持纯命令行参数,适合批量操作或远程 SSH 环境:
sudo photorec /d /path/to/save /dev/sda
直接指定设备并设置输出目录,跳过菜单选择。sudo photorec /log /d /path /dev/sda1
以日志模式运行,记录恢复过程中的详细信息,便于后续分析。sudo photorec /debug /d /path /dev/sda
开启调试模式,输出更详细的数据扫描日志,一般用于排查恢复失败原因。
PhotoRec 和 TestDisk 到底有什么区别?场景对比
这两个工具经常被一起提及,但它们的核心用途完全不同,很多新手混淆这一点,导致选错工具、浪费时间。
核心功能差异
| 对比维度 | PhotoRec | TestDisk |
|---|---|---|
| 主要目标 | 恢复丢失的文件(照片、文档、视频等) | 修复分区表、恢复丢失的分区 |
| 工作原理 | 通过文件签名(magic bytes)扫描原始数据块 | 重建分区引导记录和分区表结构 |
| 恢复结果 | 输出大量无原始文件名和目录结构的文件 | 恢复分区后,文件系统重新挂载,文件结构保留 |
| 适用场景 | 误删文件、格式化后数据残留、分区表损坏但数据仍在 | 分区表丢失、分区被意外删除、系统无法引导 |
适用场景选择
- 文件被删除,分区还在:直接使用 PhotoRec 扫描该分区,它不需要文件系统元数据,只要数据块未被覆盖,就有较高概率恢复。
- 分区表损坏,整个磁盘变未分配:先用 TestDisk 尝试重建分区表,如果重建成功,你的文件系统可能完全恢复,文件名和目录结构都保留,如果重建失败或分区表无法修复,再改用 PhotoRec 对全盘进行数据签名扫描,保底拿回文件内容。
- 误格式化后立刻写入新数据:PhotoRec 仍然有机会恢复,但恢复出的文件可能部分损坏,此时应优先停止使用该磁盘,用 PhotoRec 进行只读扫描。
数据恢复成功率参考
根据业内专家的公开经验,PhotoRec 在处理照片和常见文档时,若数据未被覆盖,恢复成功率相当高,尤其对 JPEG 和 Office 文件,对于视频文件,由于体积大且容易碎片化,成功率会降低,TestDisk 的分区修复成功率则取决于分区表损坏程度,如果是简单的 MBR 或 GPT 头损坏,成功率很高;如果是磁盘物理坏道导致,则几乎无效。
实战:Linux 下用 PhotoRec 恢复误删照片的全过程
准备阶段
假设你的相机 SD 卡在 Linux 电脑上被误格式化,里面全是 RAW 和 JPEG 照片,第一步:立即拔下 SD 卡,用读卡器连接电脑,但不要挂载它,打开终端,用 lsblk 或 fdisk -l 确认设备路径,/dev/sdb。
第二步:准备一个足够大的目标硬盘来存放恢复出的文件,目标路径不能是 SD 卡本身,否则可能覆盖原始数据,建议放在家目录下的一个独立文件夹,
mkdir ~/recovered_photos。
执行恢复
- 运行
sudo photorec /d ~/recovered_photos /dev/sdb。 - 程序会自动检测设备并进入分区选择界面,SD 卡只有单个分区,选择
[Partition]/[Whole]中的Whole选项,表示扫描整个设备。 - 文件类型选择界面,进入
File Opt,按s键取消全选,然后按空格只勾选jpeg和raw(如果需要,也可以加上cr2、nef等相机品牌格式)。 - 退回主菜单,选择
[Search]开始扫描,PhotoRec 会显示进度条和已找到的文件数量。
恢复后文件处理
扫描完成后,~/recovered_photos 目录下会出现 recup_dir.1、recup_dir.2 等子文件夹,里面是恢复出的文件,文件名被重命名为数字编号,原始文件名和目录结构全部丢失。
- 批量重命名:使用
exiftool或jhead工具,可以根据照片的 EXIF 信息(拍摄日期、时间)重命名文件,命令示例:jhead -n%Y%m%d-%H%M%S .jpg。 - 筛选重复文件:恢复过程中可能会产生大量重复或损坏的文件,可以用
fdupes扫描并删除完全相同的副本,再用mogrify或identify检查图片是否可正常打开。 - 归档备份:确认无误后,将照片复制到长期存储设备,并按照日期或地点分类整理。
PhotoRec 在 Linux 数据恢复中的定位与局限
支持的文件系统
PhotoRec 对底层文件系统不敏感,因为它直接读取扇区数据,它支持 FAT、NTFS、ext2/ext3/ext4、HFS+、ReiserFS、UFS 等多种常见文件系统,但需要注意,它无法恢复加密文件系统(如 LUKS)内部的数据,除非提前解密并提供原始设备映射。
优势和不足
优势:
- 完全免费开源,无需注册或付费,适合个人和企业用户长期使用。
- 对照片和常见文档的恢复效果稳定,尤其适合摄影师、记者等经常处理媒体文件的群体。
- 不依赖文件系统元数据,即使分区表损坏、文件系统被格式化,只要数据块没被覆盖,就有机会恢复。
- 支持命令行模式,可集成到自动化脚本中,用于服务器批量恢复或定期扫描。
不足:
- 恢复出的文件没有原始文件名和目录结构,需要额外手动整理,对大量文件恢复场景不够友好。
- 无法处理因文件碎片化导致的恢复不完整,尤其是大文件(如视频)容易被分割成多段,无法自动拼接。
- 扫描速度较慢,对大容量硬盘(2TB 以上)可能需要数小时甚至数天。
- 界面经典但略显陈旧,部分用户更偏好有图形界面的工具(如 R-Studio、DiskGenius),但后者通常需要付费。
与其他 Linux 恢复工具对比
- extundelete:只支持 ext3/ext4 文件系统,且依赖文件系统日志,恢复成功率随文件删除后时间推移急剧下降,PhotoRec 不依赖文件系统,适用场景更广。
- foremost:同样是基于文件签名恢复的工具,工作方式类似,但 foremost 更强调配置文件的灵活性,适合高级用户定制签名规则,PhotoRec 的默认配置覆盖了更多文件类型,开箱即用。
- ddrescue:用于克隆出现坏道的磁盘,属于数据抢救工具,而非文件恢复,PhotoRec 可以在 ddrescue 克隆出的镜像文件上运行,进一步提高恢复成功率。
常见问题解答
PhotoRec 恢复的照片打不开怎么办?
打不开通常意味着文件数据已经被部分覆盖或损坏,PhotoRec 在扫描时会验证文件头签名,但无法保证文件体内所有数据块完整,你可以尝试使用 JPEG 修复工具(如 jpeginfo)对损坏的图片进行修复,或使用 ddrescue 配合镜像文件再次扫描,如果原始硬盘有坏道,建议先做完整磁盘镜像,再在镜像上运行 PhotoRec。
在 Linux 上使用 PhotoRec 需要付费吗?
完全不需要,PhotoRec 是开源软件,遵循 GPL 协议,由 CGSecurity 社区维护,你可以自由下载、使用、分发,甚至修改其源代码,相比国外一些收费的数据恢复工具(如 Stellar Phoenix、GetDataBack),PhotoRec 在功能上并不逊色,尤其适合预算有限的个人用户和中小型企业,对于 Linux 运维人员,它更是系统自带源中即可获取的免费利器。
PhotoRec 能恢复 ext4 文件系统下的文件吗?
能,PhotoRec 对 ext4 的支持良好,但它不依赖 ext4 文件系统的日志或元数据,而是直接扫描磁盘扇区的文件签名,这意味着即使 ext4 文件系统被重新格式化,或者分区表被删除,PhotoRec 仍然可以基于数据签名找到文件,它无法保留 ext4 下的文件名、权限、时间戳等属性,恢复出的文件统一以数字编号命名,如果你需要保留文件系统结构,建议先尝试 TestDisk 修复分区表,如果失败再转用 PhotoRec。
对于 Linux PhotoRec 是应对数据丢失最可靠的应急方案之一,它的免费特性、跨文件系统支持以及对照片和文档的高恢复成功率,使其成为系统管理员、摄影师和普通用户都应掌握的工具,理解它的工作原理和局限性,能让你在关键时刻做出正确选择,最大程度挽回损失。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/509739.html



