谁也没法保证一定不会有错删或者删完文件又后悔的时候,其实在DOS时代开始微软就提供了Undelete命令来恢复已删除的文件,Win开始提供了回收站体系,删除的文件不会直接从硬盘上抹除,而是先进入回收站,待回收站空间用满或手动清空时才实际执行删除操作。
& A* k# H, H W: p. q( a
, a0 t& A' S6 |+ W0 D# e: U' c& I* S 不过即便如此也避免不了有手滑的时候,熟练的电脑用户可能会利用Shift+Del快捷键来不经回收站直接删除文件,而很多处女座用户也有随时清空Win回收站的强迫症。已从回收站清空的文件可以借助Handy Recovery一类的工具来尝试恢复。
( O7 A" I! T) s/ O2 I1 l$ N, u) ~6 Y* p& J2 A8 U L) ?8 K" W
这一招在机械硬盘时代百试不爽,只要是刚刚删除的文件,还未被其他数据覆盖之前恢复成功率几乎百分百。" x r9 A. D6 ^* i) R2 X5 N
* ?5 H4 ^; c x0 O# J- K1 `! Q n3 H
而到了固态硬盘里,各种数据恢复软件所有哑火,即便能显示出文件名,恢复出的文件内容也所有是空白的。
& D4 X1 A$ u% j1 T, F
2 ]; K$ P+ e: H$ n5 K1 d& h 之所以会发生这种现象还要从两种硬盘的储存原理说起,机械硬盘运用带有磁性涂层的盘片记录数据,删除操作只修改文件头或文件分配表,在被实际覆盖写入前数据不会被清除。而固态硬盘运用了闪存作为储存介质,速度更快延迟更低,不怕震动没有噪音,但诸多优势之外有一个与磁性记录不一样的特点,那就是数据写入之前闪存必须先进行擦除。
- E7 [2 U# a$ g
/ k4 V3 v, }- D! G& E5 F 为了满足随时写入和磨损均衡等需要,写入固态硬盘的数据在闪存内的存放位置并不是与外部存取地址一一对应的,而是由一张叫FTL的动态链表来维护。要想通过实际地址来恢复数据无异于刻舟求剑。, q0 @4 s' k" c) j1 s
. g" b+ @ L- A7 q' h* L9 R 为了保障固态硬盘内随时有空白位置可直接写入,操作系统运用了名为Trim的指令,在删除文件时会通知SSD的主控哪些地址的数据已经没用了,可以回收重利用。3 a' `( @5 |4 \/ g- J
+ P6 M/ U2 K4 O7 A
SSD主控收到Trim信息后会将这些位置的数据放入固态硬盘内的“回收站”,并在空闲时将对应的闪存进行擦除,这样数据就再也不可能被恢复出来了。
0 J, J9 ]' ^% ~' v- _) c4 l! @$ B: K- R0 V0 |! v0 Q' O
即便固态硬盘内的“回收站”一时还没有清空,SSD主控也会在FTL表中将这些位置标注为全零空白,通过外部软件也无法恢复SSD中已Trim过的数据。如果关闭固态硬盘的Trim功能,可以用管理员身份运行命令提示符,然后输入fsutil behavior set disabledeletenotify 1并回车,这样就可以在操作系统层面禁用Trim,让固态硬盘表现出机械硬盘一样的数据可恢复性。当然这样做会对SSD性能产生一些不利的影响,如何权衡还要看大家的选择了。
6 C5 _6 H' b+ m G6 E' O& U1 q. \$ [7 D. {- |% k% N
|