photorec核心是绕过文件系统,直接扫描磁盘扇区匹配文件签名恢复数据;启动需用sudo src/photorec -d强制显示全部设备,选“deeper search”,精简文件类型过滤,并保存至独立存储设备。

PhotoRec 在 Linux 下抢救损坏数据,核心不是“修复文件系统”,而是绕过它——直接从磁盘扇区里扒出带签名的文件块。只要数据没被覆盖,哪怕分区表全毁、格式化完成、ext4 变成空白 FAT32,它都能把 JPG、PDF、MP4 这些文件的原始字节捞出来。
怎么启动 photorec 并避开常见设备误选
编译完后,photorec 可执行文件在 src/photorec 路径下,不要用 sudo ./photorec 直接跑,容易选错设备:
- 先用
lsblk -f或sudo fdisk -l确认目标设备名(比如/dev/sdb,不是/dev/sdb1) - 运行
sudo src/photorec,程序会列出所有块设备,但默认只显示“可挂载”的分区——已损坏或格式化的设备可能被隐藏 - 按
Ctrl+C退出后,加-d参数强制显示全部:sudo src/photorec -d - 选设备时,认准容量和型号(比如 “SanDisk Ultra 64GB”),别只看
/dev/sdb这种名字,U 盘和硬盘混插时极易选反
深度扫描必须关掉“快速扫描”模式
默认启动是“Quick Search”,它只查文件系统残留的目录项,对已格式化或分区损坏的设备基本无效。真要抢救,必须进“Deeper Search”:
- 进入主界面后,方向键移到
[Proceed]→ 回车 → 出现菜单选[Search] - 再进一层,会看到
[Quick Search]和[Deeper Search]—— 选后者 -
Deeper Search会逐扇区扫描整个设备(从 LBA 0 开始),耗时长但唯一可靠方式 - 如果设备有坏道,它会自动跳过并继续;若卡死在某扇区,可按
s键跳过当前块,避免无限等待
文件类型过滤不是可选项,而是必要操作
不设过滤,PhotoRec 会恢复所有 480+ 种格式,包括大量碎片、临时文件、系统日志,最终生成上万个小文件,根本没法筛。抢救前务必精简:
- 进主界面后,选
[File Opt]→ 用空格键取消勾选不需要的类型(比如只救照片就只留jpg、png、cr2) - 注意:RAW 格式(如
arw、nef)和视频(mp4、mov)需单独开启,它们默认是关闭的 - 别开
txt或log,这类文件头太简单,极易误匹配,产生海量垃圾 - 保存路径必须是另一块物理硬盘(比如
/mnt/backup),绝不能是/home或待恢复设备的挂载点
恢复结果命名混乱?这是正常现象,但能补救
PhotoRec 不知道原文件名,所有恢复出的文件都叫 f0000000.jpg、f0000001.mp4,但实际内容是完整的:
- 它写入的是原始数据流,校验通过才落盘,所以文件大小和内容一般没问题
- 用
file f0000000.jpg可验证类型;用exiftool f0000000.jpg可读取拍摄时间,辅助重命名 - 批量修复名可用脚本,例如按 EXIF 时间重命名:
exiftool "-FileName<datetimeoriginal></datetimeoriginal> - 千万别用图形化文件管理器双击打开大量恢复文件——某些损坏的 MP4 头部可能触发播放器崩溃或卡死
最易被忽略的一点:PhotoRec 恢复的是“文件内容”,不是“文件结构”。它无法还原目录层级、权限、硬链接或稀疏文件。如果你需要完整文件系统视图,得先用 TestDisk 尝试修复分区表,再考虑 PhotoRec 作为兜底方案。











