命令行恢复文件通过直接操作文件系统实现,适用于图形界面失效、深度扫描或元数据恢复场景,各系统均有专用工具。
文件恢复并非总是100%成功!最关键的一步是:一旦发现文件误删,立即停止向该文件所在的磁盘分区写入任何新数据! 继续使用该分区(保存文件、安装程序、甚至大量浏览网页)会显著降低恢复成功率,因为新数据可能覆盖了被删除文件占用的空间,对于系统盘(通常是C盘),请立即关闭不必要的程序,并尽快开始恢复操作。
Windows 系统 (主要针对 NTFS/FAT32/exFAT 文件系统)
Windows 原生命令(如 cmd
或 PowerShell
)本身不提供直接恢复已删除文件的功能,我们需要依赖强大的第三方开源工具:
-
TestDisk
&PhotoRec
(黄金组合)- E-A-T 体现: 由 CG Security 开发维护,是业界公认的、久经考验的开源数据恢复标准工具,具有极高的专业性和权威性,官网提供详细文档和支持。
- 功能:
TestDisk
: 主要用于修复分区表、恢复丢失的分区、从非启动分区启动,它也能恢复已删除的 NTFS 引导扇区,有时这能帮助系统重新识别被删除的文件(如果目录结构未被破坏)。PhotoRec
: 专为恢复而设计,它忽略文件系统和文件名,通过扫描磁盘扇区,根据已知的文件类型签名(如 JPEG 头、DOCX 头、MP3 头等)来“挖掘”丢失的文件内容,这意味着它能恢复格式化后、分区丢失后的文件,但恢复的文件通常没有原始文件名和目录结构,需要你后期整理。
- 如何使用 (以 PhotoRec 恢复文件为例):
- 下载: 从 CG Security 官网 (https://www.cgsecurity.org/) 下载
TestDisk
Windows 版,解压到U盘或非丢失文件所在分区的文件夹。 - 启动: 以管理员身份运行
photorec_win.exe
(命令行版本) 或qphotorec_win.exe
(简易图形界面,底层仍是命令行)。 - 选择磁盘: 使用方向键选择包含丢失文件的物理磁盘 (如
Disk /dev/sda
),按Enter
。 - 选择分区: 选择丢失文件所在的分区 (如
Partition /dev/sda2
),按Enter
,如果分区已丢失或损坏,选择[Proceed]
->[None]
->[Whole disk]
扫描整个磁盘(更慢)。 - 选择文件系统: 通常选择
[Other]
(对于 NTFS/FAT/exFAT) 或[Intel/PC partition]
,按Enter
。 - 选择文件恢复位置: 极其重要! 使用方向键和空格键选择一个与源磁盘完全不同的物理磁盘上的文件夹来存放恢复出来的文件。绝对不能选择源磁盘或源分区! 按
C
(大写C) 确认。 - 选择文件格式 (可选): 默认 (
[File Opt]
) 会扫描所有支持的类型,按s
可以进入文件类型选择菜单,用空格键勾选/取消特定类型,按b
返回,如果只找特定类型文件(如图片),只选那些类型能加快扫描速度。 - 开始扫描: 按
Y
或直接按Enter
开始深度扫描,扫描时间取决于磁盘大小和速度,可能很长。 - 恢复完成: 扫描结束后,程序会报告找到的文件数量,按
Enter
退出,去你指定的输出文件夹查找恢复的文件,文件会被命名为f1234567.jpg
之类的形式,你需要根据内容识别。
- 下载: 从 CG Security 官网 (https://www.cgsecurity.org/) 下载
-
chkdsk
(有限作用 – 主要用于修复文件系统错误)- 命令:
chkdsk X: /f
(X:
是盘符) - 作用: 检查磁盘错误并尝试修复。它本身不是设计用来恢复已删除文件的。 但在某些特定情况下,如果文件删除是由于文件系统元数据(如
$MFT
中的记录)损坏或丢失簇造成的,运行chkdsk /f
可能 会将丢失的簇链恢复成FILEXXXX.CHK
文件(位于分区的根目录或FOUND.XXX
文件夹),这些文件内容可能是你删除文件的一部分,但没有原始文件名,且成功率不高。风险提示: 在严重数据丢失情况下运行chkdsk /f
有极小概率导致情况恶化(虽然罕见),因此通常建议先尝试PhotoRec
。
- 命令:
Linux 系统 (主要针对 ext3/ext4, XFS, Btrfs 等文件系统)
Linux 拥有强大的原生和第三方命令行恢复工具:
-
extundelete
(专精 ext3/ext4)- E-A-T 体现: 专门为 ext3/ext4 文件系统设计,开源且被广泛使用,社区支持良好,在特定场景下恢复效果较好。
- 安装 (以 Debian/Ubuntu 为例):
sudo apt-get install extundelete
- 基本用法:
- 卸载分区: 必须先将丢失文件所在的分区卸载!
sudo umount /dev/sdXY
(/dev/sda2
)。 - 恢复所有可恢复文件:
sudo extundelete /dev/sdXY --restore-all
(恢复的文件会保存在当前目录下的RECOVERED_FILES
文件夹里)。 - 恢复特定目录:
sudo extundelete /dev/sdXY --restore-directory /path/to/lost/dir
- 恢复特定文件:
sudo extundelete /dev/sdXY --restore-file /path/to/lost/file
- 恢复特定 inode:
sudo extundelete /dev/sdXY --restore-inode 12345
(需要知道 inode 号,可用ls -i
查看同分区其他文件的 inode 格式推测)。
- 卸载分区: 必须先将丢失文件所在的分区卸载!
- 优点: 能恢复文件名和目录结构(如果元数据未被覆盖)。
- 缺点: 仅适用于 ext3/ext4,需要卸载分区,对系统盘操作不便。
-
TestDisk
&PhotoRec
(跨平台利器)- 在 Linux 上同样适用,安装方式通常通过包管理器 (如
sudo apt-get install testdisk
) 或从官网下载编译,使用方法和 Windows 版基本相同(步骤 1-9)。PhotoRec
在 Linux 下对 ext/XFS/Btrfs 等文件系统的文件内容恢复同样有效。
- 在 Linux 上同样适用,安装方式通常通过包管理器 (如
-
scalpel
/foremost
(基于文件签名的“挖掘”工具)- 原理: 类似于
PhotoRec
,通过扫描磁盘块,根据预定义的文件头/尾签名来识别和提取特定类型的文件碎片,不依赖文件系统。 - 安装 (以 Debian/Ubuntu 为例):
sudo apt-get install scalpel
或sudo apt-get install foremost
- 使用
scalpel
示例:- 配置: 编辑
/etc/scalpel/scalpel.conf
(或复制到当前目录),取消注释你需要恢复的文件类型对应的行 (如jpg
,docx
,pdf
),并确保inode
选项被注释掉。 - 运行:
sudo scalpel -b -o OutputDirectory /dev/sdXY
(/dev/sdXY
是包含丢失文件的分区,OutputDirectory
是另一个磁盘上的输出目录)。
- 配置: 编辑
- 优点: 不依赖文件系统,能恢复格式化后的文件。
- 缺点: 恢复的文件没有原始名和路径;需要精确配置文件类型;可能恢复出大量碎片或不完整文件;速度可能较慢。
- 原理: 类似于
macOS 系统 (主要针对 APFS/HFS+)
macOS 的命令行环境 (Terminal
) 也主要依赖强大的第三方工具:
-
TestDisk
&PhotoRec
(首选跨平台方案)- 同样是从 CG Security 官网下载 macOS 版本,使用方法和前述 Windows/Linux 步骤一致。
PhotoRec
对 APFS 和 HFS+ 文件系统的文件内容恢复支持良好,是命令行下的主力工具。
- 同样是从 CG Security 官网下载 macOS 版本,使用方法和前述 Windows/Linux 步骤一致。
-
diskutil
(有限功能 – 主要用于急救)- 命令:
diskutil verifyVolume /dev/diskXsY
(检查),diskutil repairVolume /dev/diskXsY
(修复) - 作用: 类似于 Windows 的
chkdsk
,用于检查和修复 APFS/HFS+ 文件系统结构错误。它本身不用于恢复已删除文件。 在极少数因文件系统损坏导致文件不可见的情况下,修复可能使其重新出现,但这不是恢复已删除文件的可靠方法。
- 命令:
通用重要提示与最佳实践 (提升恢复成功率与安全性):
- 立即停止写入!(再次强调): 这是所有恢复操作成功的基础。
- 恢复目标选择: 恢复出来的文件必须保存到另一个物理硬盘、U盘或网络驱动器上。绝对不要保存回原丢失文件所在的磁盘/分区!
- 理解原理与局限:
- 命令行工具(尤其是
PhotoRec
/scalpel
/foremost
)恢复的文件可能丢失原始文件名、目录结构和时间戳,需要手动整理识别。 - 文件被覆盖的部分无法恢复,覆盖越多,恢复越难,文件越可能损坏。
- 固态硬盘 (SSD) 由于 TRIM 指令和磨损均衡机制,文件删除后可能很快被物理擦除,恢复难度和成功率通常低于机械硬盘 (HDD)。在 SSD 上恢复需争分夺秒。
- 命令行工具(尤其是
- 优先尝试只读扫描: 大多数专业工具(如
TestDisk
的分析模式、extundelete
的--after
/--before
预览)允许你先查看可恢复内容,再决定是否执行实际恢复操作,利用好这个功能。 - 寻求专业帮助: 如果数据极其重要且命令行工具恢复效果不理想,或者涉及物理磁盘损坏(异响、无法识别),请立即停止所有操作,寻求专业数据恢复公司的服务,他们拥有无尘环境、专业硬件和更高级的软件技术。
- 定期备份: 预防永远胜于恢复! 建立并严格执行可靠的备份策略(如 3-2-1 原则:3份数据副本,2种不同介质,1份异地备份)是保护数据最有效、最经济的方法。
使用命令行恢复已删除文件是一项需要技术知识和谨慎操作的任务。TestDisk
和 PhotoRec
是跨平台的强大开源工具组合,是命令行恢复的主力军,在 Windows 下主要依赖它们;在 Linux 下,extundelete
(针对 ext3/4) 和 scalpel
/foremost
也是有力补充;在 macOS 下同样首选 TestDisk
和 PhotoRec
。牢记“立即停止写入”和“恢复目标选不同物理盘”这两条铁律。 理解工具的局限性和恢复原理,对于不成功或极其重要的情况,及时寻求专业服务,最重要的是,养成良好的备份习惯,防患于未然。
引用说明:
- CG Security – TestDisk & PhotoRec: 本文核心工具介绍、原理及使用方法主要参考其官方文档和广泛认可的实践指南。https://www.cgsecurity.org/
- 文件系统原理 (NTFS, ext4, APFS, HFS+): 对文件删除机制、恢复可能性的阐述基于对主流文件系统技术文档和标准的普遍理解(如 Microsoft Docs, Linux kernel documentation, Apple Developer documentation)。
- 数据恢复最佳实践: “立即停止写入”、“恢复目标选择不同物理盘”等原则是数据恢复领域的行业共识和基础准则,被所有专业数据恢复服务商和可靠的技术资料所强调。
- SSD TRIM 与恢复: 关于固态硬盘恢复难度的说明基于 SSD 存储技术特性(NAND 闪存管理、TRIM 指令)的公开技术资料和行业经验总结。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4772.html