有人问,我不小心把新文件存成了旧文件的名字,点了替换,原来那份还能找回来吗。答案要看盘:机械盘上还有一点点机会,固态上基本没有。
保存同名文件时,系统不是把原文件擦掉再写新的。它按原来的位置写,长度够就原地改,长度不够就先释放旧簇、再找新簇写。
原地改的那部分,原来的字节被新字节替换,物理上没了。换簇写的那种,原来的簇被标成空闲,内容还在,只是没有目录指向它——这种情况其实还能扫出来。
所以“覆盖”分两种:原地覆盖基本没救,换位置写的还有机会。这两种从文件大小能大致判断。
同一个位置写一遍,原始字节就没了,恢复软件读到的全是新内容。
但一块盘上的文件是分散的。新文件只覆盖了一部分簇,剩下那些簇上的旧内容还在,扫描能捡到碎片。捡到的碎片通常拼不成完整文件,能拼出前几百 K,后面的就断了。

写得越多,剩下的越少
写第二遍、第三遍,连碎片都被冲掉。三遍以上,同一个位置基本找不到任何旧痕迹。
机械盘的写入是原地改磁。同一位置写一遍,磁性方向变一次,原来的信息就没了。听起来很绝望,但机械盘的容量大、文件分散,实际覆盖往往只碰到一小部分。
固态更彻底。写入前要先擦除整个块,一个块通常是几百 K 到几 M。改一个字节,整个块被搬到新位置重写,原来的块标成可擦除,TRIM 一执行就真擦了。

机械和固态,两种命
再加上磨损均衡,固态会把写入分散到全盘。这意味着你只覆盖了一个文件,实际被影响的块可能遍布整块盘。固态上的覆盖恢复,成功率接近于零。
换位置写的那种,比如把 10G 的视频换成 2G 的文档,只用了前面一小段簇,后面 8G 的旧内容还在。这种扫出来的概率不低。
还有一种是“另存为”到同一个目录、不同文件名。原文件根本没被碰,只是多了一个新文件。这种不算覆盖,直接删新的就行。
移动文件也算。同一分区内移动只是改目录,不动数据;跨分区移动才是复制加删除,原位置的内容还在,扫得出来。
固态上覆盖过的,放弃。文件被反复保存过几十次的(比如天天改的表格),放弃。已经低级格式化过的,放弃。
这三种情况花多少钱都是白花。有人不信,找了三家,花了小两千,最后拿回来的还是一堆乱码。

这几种,别再花钱试
先算一下这份数据值多少钱,再决定要不要花这个钱,顺序别反。
重要文件开自动备份
或者每天手动存一份带日期的副本
覆盖前先看一眼有没有同名文件
系统会弹确认框,别一路回车
用版本管理
Word和Excel都自带版本历史,能回到几天前
网盘同步开着
删除和覆盖都有历史版本可追

四种防覆盖的做法
回收站里的文件被新删除的顶掉了,还能恢复吗
能试。回收站满了会按时间清最旧的,被清掉的那个文件在盘上还在,只是没了目录。按误删处理就行。
覆盖之后马上关机,有用吗
有用,但不如不写。关机阻止了后续写入,已经覆盖的部分救不回来,没覆盖的部分保住了。
覆盖就是原位置被新数据替代,同一块扇区写几遍,原来的东西就没了。机械盘能捡碎片,固态连碎片都没有。