PhotoRec在Linux中恢复误删文件的核心思路是绕过文件系统,直接扫描磁盘扇区识别文件签名,可恢复清空回收站后的数据,但无法还原原始文件名和路径;操作前须立即停止写入并指定外部存储为恢复目标。

PhotoRec 在 Linux 中找回被误删的文件,核心思路是:不依赖文件系统索引,直接扫描磁盘扇区中残留的文件内容(通过文件签名识别),因此即使文件已被删除、回收站清空,只要数据尚未被覆盖,就很可能恢复成功。但要注意——它无法还原原始文件名和目录结构,这是技术原理决定的限制。
确认是否适合用 PhotoRec
适合的情况:
- 文件被普通删除(比如
rm命令或图形界面拖入回收站后清空) - U 盘/SD 卡被格式化,但未写入大量新数据
- ext4、XFS 等分区仍能挂载,只是部分文件“不见了”
不适合的情况:
- 整个分区消失、磁盘显示为“未分配”或“未知”——该用 TestDisk 先修复分区表
- 硬盘有明显异响、频繁掉盘、
dmesg报大量 I/O 错误——可能存在物理损坏,需先做镜像再操作 - 你需要原样恢复文件名和路径(PhotoRec 恢复的文件统一命名为
f12345678.jpg这类)
操作前必须做的两件事
立即停止向目标设备写入任何数据。哪怕只是打开一个终端、运行 ls,都可能触发日志写入或缓存刷新,覆盖刚删除的文件空间。
准备另一块物理存储设备作为恢复目标。不能把找回的文件存回原硬盘、原分区,否则等于自我覆盖。U 盘、移动硬盘或另一块空闲分区都可。
具体恢复步骤(终端命令版)
以 Ubuntu/Debian 或银河麒麟等主流发行版为例:
-
安装工具:
sudo apt update && sudo apt install testdisk -y
(PhotoRec 已包含在 testdisk 包中) -
以 root 启动 PhotoRec:
sudo photorec
(必须用 sudo,否则无法读取原始设备) -
选择目标磁盘:
用方向键选中你要恢复的设备(如/dev/sdb是 U 盘,/dev/nvme0n1是 SSD),按Enter→ 选 [Proceed] -
选择分区:
列出所有分区,定位到你删除文件所在的那个(如/dev/nvme0n1p2对应 Linux/home所在分区),选中后按Enter→ 选 [Search] -
设置文件系统类型:
若为 ext4,选ext2/ext3(PhotoRec 将其归为一类处理);若为 NTFS,选NTFS;不确定可选Other(全格式扫描) -
指定恢复路径:
程序会提示 “Select a directory where to copy the recovered files”,用方向键切换到你准备好的外接设备路径(如/media/user/USB/recup),按C确认 -
开始扫描:
默认启动 [Whole] 全盘扫描(推荐),按Enter开始。时间取决于设备容量和速度,100GB SSD 通常 15–45 分钟
恢复后怎么识别文件
PhotoRec 会按类型自动建子目录,例如:
-
recup_dir.1/jpg_0001/→ 恢复出的所有 JPEG 文件 -
recup_dir.1/docx_0002/→ 恢复出的 DOCX 文档 -
recup_dir.1/zip_0003/→ ZIP 压缩包
每个文件名类似 f12345678.jpg,但内容完整可用。你可以用以下方式辅助判断:
- 用
file f12345678.jpg查看是否真为 JPEG - 用
exiftool f12345678.jpg | grep "Date\|Model"提取拍摄时间、相机型号等线索 - 对文档用
strings f98765432.docx | head -20快速预览开头文字
不复杂但容易忽略


















