很多人以为删除是真的把文件销毁了,像碎纸机那样。不是。删除这个动作,硬盘上改的只是一个标记位,文件的内容一个字节都没动。理解了这一点,后面所有恢复操作的逻辑就顺了。
从盘怎么存文件说起。

硬盘被切成一个个扇区,每个扇区 512 字节或者 4K。文件系统在上面盖了两层东西:一层记录哪些扇区空着、哪些被占了,一层记录文件的名字、大小、创建时间、起始位置。后者在 NTFS 里叫 MFT,主文件表。
你看到的文件夹结构、文件名、图标,全都是 MFT 里的记录。真正的内容在别处,按记录里写的地址一段段放着。
大文件不是连续的。一块盘用久了,空间碎片化,一个 1G 的视频可能被拆成几十段,散在盘的不同位置。MFT 里存着一串地址,读的时候按顺序去取。
删文件,系统做两件事:把 MFT 里那条记录标记成"未使用",把它占的扇区在空闲表里标成"可写"。文件名的第一个字符有时会被改掉,所以恢复出来常常是 ? 开头。
内容没动。这就是为什么删除之后还能扫出来。删除只影响索引,不影响数据区,这句话是整个数据恢复行业的地基。
Shift 加 Delete 跳过回收站,改的是同一处,只是不往回收站里放一条记录。回收站本身也只是个特殊文件夹,清空它就是把这些记录删掉,同样不碰数据区。

快速格式化重建文件系统:清空 MFT,重建空闲表,写入新的引导记录。数据区一个字节没碰。所以格式化之后马上扫,能扫出大量文件,只是名字全没了。
完全格式化多一步:整盘写零。写完就真没了,扫出来的全是零。这个选项在格式化窗口里默认不勾,勾上要等很久,所以大多数人手快的格式化都是快速的。
三种。一是被覆盖,新文件写进了原来的扇区,一个字节压一个字节,物理上没法还原。二是固态的 TRIM,主控主动把块擦成空白,等于提前做了完全格式化。三是物理损坏,盘片划伤、颗粒击穿,那块区域读都读不出来。
前两种占失败原因的绝大多数。所以恢复的第一原则不是找好软件,是停止写入。

它不"修复"任何东西,它做的是三件事:绕过文件系统直接读扇区;按文件类型的特征码找出每个文件的头尾;把碎片按规则拼起来。
JPG 开头是 FF D8,Word 文档开头是 PK,这些特征很稳定,所以照片和文档的恢复率最高。视频、压缩包、虚拟机镜像的结构复杂,拼接容易出错,恢复出来经常打不开。
机械盘的删除是纯逻辑操作,固态多了一层。主控要做磨损均衡,把写入分散到不同的块,还要在空闲时执行 TRIM,把删掉的块整体擦掉。
TRIM 是操作系统发指令、主控执行,时间点不固定。可能删完几分钟就开始,也可能等你下次开机。开了 TRIM 的盘,隔一夜再扫,往往只剩文件名,内容全是零。

看文件大小和写入时间。小文件占的扇区少,不容易被压到;大文件摊在几十个位置,只要有一段被覆盖,整个文件就废了。刚删的比删了很久的机会大,不是因为时间,是因为中间写的东西少。
还有文件系统的差别。NTFS 的记录细,恢复起来准;exFAT 和 FAT32 常见于 U 盘和存储卡,记录粗,文件名容易丢,但内容反而好找。