专栏首页浩Coding【程序猿硬核科普】为什么固态硬盘删除数据后无法恢复 | 附常用的硬盘数据恢复软件

【程序猿硬核科普】为什么固态硬盘删除数据后无法恢复 | 附常用的硬盘数据恢复软件

本篇文章主要讲机械硬盘删除文件的原理以及SSD固态硬盘删除数据后为何无法恢复,文末附常用的硬盘数据恢复软件。

硬盘删除和恢复文件的原理

我在网上找了一段资料,非常生动形象的描述了硬盘创建、删除、恢复文件的原理,大家可以看一看。

创建文件:盖大楼(文件本体),同时制作一个指向楼的路标(指针)。用户通过路标就能找到楼。“删除”文件(移动至回收站):在路标上写一个“拆”字。恢复文件(从回收站恢复):将路标上的“拆”字抹掉。“完全”删除文件(这里的“完全”删除指的是Shift+Delete直接删除,或从回收站删除):把路标拆了,楼先留着。这样,只记路标位置的用户就无法找到这个楼的具体位置了,而且也不会消耗太多的时间(毕竟拆路标比拆楼容易多了)。此时,虽然楼还在原地,但是这块地已经被系统认定为“空地”了——文件本体占据的空间被加入到硬盘可用空间中。恢复文件(恢复“完全”删除的文件):因为废弃的大楼还在原地,专业的搜救队(数据恢复工具)还是有可能找到它的。然而楼附近很可能都是废墟(被删除数据),它们可能会干扰搜救队的判断,造成抢救失败。一般来说,搜救队会尝试将楼1:1整体复制到其他场所,这样如果抢救失败了,用户还有机会请求其他搜救队的帮助;而如果原地抢救,万一失败,可能会对楼造成无法逆转的破坏。恢复文件的原理:(评论区 陆涛 问起这个问题,于是补充一下)从一片废墟中找到目标大楼的“招牌”。找到之后,以找到的楼为原型,在其他地方建造一模一样的新楼。(招牌:绝大多数的文件都以特定内容开头和结尾,比如GIF格式图片一定是以GIF87a或者GIF89a开头、十六进制数字“3B”结尾。只要定位到特定文件头、文件尾,基本就能确定这部分数据属于同一个文件,以及判断出该文件的格式)再创建文件:施工队到达施工现场后,发现这里已经有大楼存在,但是这个大楼已经废弃,于是把它炸了,盖新的楼。这时候原来的楼就彻底找不到了,最多只能抢救出一部分残骸。(注:以上信息仅对普通硬盘有效;如果使用的是SSD固态硬盘,且SSD硬盘本身和操作系统都支持 Trim 指令 ,则在执行“完全”删除操作的同时,会立刻开始拆楼,因此删除的数据无法找回。)“粉碎”文件(使用第三方工具,在普通硬盘上彻底删除文件):将原来的楼炸掉,然后在废墟上搭建违章建筑(全零、全一,或者随机无用数据)。搭建完成后,将违章建筑炸掉,再搭建新的违章建筑。如此反复一定次数后,原来的楼就连渣都找不到了。该操作需要在炸楼后盖新楼(且可能会盖好几次),因此速度非常慢。请不要在SSD固态硬盘上使用文件粉碎工具,因为:1.SSD硬盘的寿命与写入数据的次数有关。文件粉碎工具会多次写入数据,严重影响硬盘寿命。2.由于耗损平均技术( Wear leveling),在SSD硬盘上无法强行指定写入数据的位置,这一点与普通硬盘不同。也就是说,SSD硬盘上搭建的违章建筑很可能和原来的楼位置完全不同,无法达到破坏楼的效果。3.由于上文中提到的 Trim指令,一般并不需要刻意执行“粉碎文件”操作。

为何固态硬盘删除数据后无法恢复

来源:维讯网论坛

作者:2支棒棒糖

原文链接:https://www.chinafix.com/thread-1113860-1-1.html

为何固态硬盘删除数据后无法恢复

大家日常操作电脑时候难免会有误删文件的情况出现,所以为了补救这种情况,Windows从一开始就有了“回收站”的保护机制,后面包括一些桌面版的Linux系统也有了回收站机制。但像我这种强迫症患者们没事就清理回收站,毕竟鼠标右键点击“清空”选项的时候,它们就真的从硬盘上抹掉了。 嗯,当走到这步的时候,我们还有最后救命的办法,用软件尝试恢复数据,但绝对不是次次有效,对传统的机械硬盘用这招还好,虽然不能说是100%吧,但成功率超过五成还是有的。但在SSD可就不好说了,真心的十试九败。为什么SSD的成功率就那么低,关键的问题点就在SSD和机械硬盘完全不同的数据存储方式

读了上一小节文章的读者应该知道机械盘删除文件是直接标记这块地方数据没用不会去物理删除,而是下次写到这块区域了直接覆盖写入,所以机械盘没覆盖写入前就可以找回数据

固态就不同,固态硬盘写入前必须物理删除这块区域才能写入,不能直接覆盖写入。所以有些系统【比如win10】为固态做了优化默认开启trim空间回收功能,删除文件直接物理删除以便于下次写入更快,不然的话下次写到这块区域就必须先删除再写入就会拖慢固态的速度。

如何查看trim功能开没开:打开命令提示符CMD输入以下代码:

fsutil behavior QUERY DisableDeleteNotify

如果显示的是DisableDeleteNotify = 0就是开了trim功能,1就是没开,就有恢复的希望。

如果你不在意固态的寿命,为了数据安全着想在CMD输入fsutil behavior set disabledeletenotify 1按下回车键即可关闭Trim ,这样一来以后在SSD中删除数据的话就可以进行恢复了。

【必须用管理员权限打开CMD】

方法一:

打开C:\Windows\System32目录,找到cmd.exe,单击选中后右键,菜单中选择“以管理员身份运行”。

方法二:

1、点开开始菜单,在搜索框中输入“cmd”,在搜索结果中,对着命令提示符程序,单击鼠标右键,菜单中点击选择“以管理员身份运行”。

2、点开开始菜单,再点击所有应用(程序),在Windows系统(Win7在附件中),找到并右键单击,菜单中选择“以管理员身份运行”。

常用的硬盘数据恢复/销毁软件

大家日常操作中如果遇到误删除软件的情况,这时最需要做的就是停止写入数据,防止数据被覆盖,再找到数据恢复软件进行尝试数据恢复。

1、DiskGenius【部分功能需付费】

官网链接:http://www.diskgenius.cn/

鼎鼎大名的DiskGenius,是一款经典的硬盘分区工具 ,功能全面,安全可靠,非常好用且软件体积小。除了创建分区、删除分区、格式化分区、隐藏分区、分配盘符等基本功能外,DiskGenius 还提供快速分区、无损调整分区大小,分区表备份恢复等更多高阶功能。支持GPT分区格式,支持EXT4文件系统。

2、easyrecovery【部分功能需付费】

官网链接:https://www.easyrecoverychina.com

EasyRecovery 支持从各种各样的存储介质恢复删除或者丢失的文件,它支持多种存储介质:硬盘驱动器、光驱、闪存、硬盘、光盘、U盘/移动硬盘、数码相机、手机等。能恢复包括文档、表格、图片、音频、视频等各种数据文件。

3、winhex【较专业小白勿用】

官网链接:http://www.x-ways.net/winhex/

winhex 是一个专门用来对付各种日常紧急情况的工具。它可以用来检查和修复各种文件、恢复删除文件、硬盘损坏造成的数据丢失等。同时它还可以让你看到其他程序隐藏起来的文件和数据。总体来说是一款非常不错的 16 进制编辑器。-- 来源:百度百科winhex

4、扩容盘鉴定程序 /磁盘数据覆盖软件【B站up主:epcdiy

driveclear是B站up主epcdiy编写并开源的一款用于检测硬盘容量、覆盖磁盘数据的软件,使用非常方便,重点是开源了哦,感兴趣的小伙伴可以研究一下。

软件下载地址:https://github.com/epcsoft/driveclear/releases

源代码:https://github.com/epcsoft/driveclear

备用下载地址:https://www.lanzous.com/i90os1c

B站up主epcdiy的详细资料:https://space.bilibili.com/12590

5、其他数据恢复软件【来源于百度,下载请小心使用哦!】

包括:苹果恢复大师、果师兄、嗨格式数据恢复大师、失易得数据恢复、Recuva、SoftPerfect File Recovery等等。

参考文章

1、在硬盘中,我们删掉的文件去哪里了?而为什么文件在专门的公司又能被恢复?恢复的原理是什么?

https://www.chinafix.com/thread-1113860-1-1.html

2、为什么固态硬盘删除数据后无法恢复?

https://www.cnblogs.com/Datarecovery/p/6723017.html

3、SSD查看TRIM功能代码来源:知乎张伟 链接:https://www.zhihu.com/question/317474630/answer/632427491

祝君工作顺利,加油。

【程序猿硬核科普】系列是利用晚上闲暇时间在半小时到一小时之内完成的科普类型文章,有不明白的就去搜资料,学习完就做笔记,旨在克服拖延症。文章可能多有疏漏之处,敬请指正!

本文分享自微信公众号 - 浩Coding(gh_c4a2e63d2ca7),作者:浩

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小白Linux入门--入门篇:Linux下搭建JavaWeb环境

    1. 下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-...

    浩Coding
  • Linux命令之tar——压缩

    通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具。linux中最流行的tar是麻雀虽小,五脏俱全...

    浩Coding
  • 【程序猿水贴】风是如何形成的 | 大气运动的原因

    最近看新闻偶然和老爸聊到最新的疫情,老爸随口说这病毒会被风刮到对面的M国去,我反驳说这是病毒又不是细菌。后来老爸又说形成风的原因是地球自转,我笑到说怎么可能,风...

    浩Coding
  • android UiAutomator如何根据颜色判断控件的状态

    本人在用UiAutomator做测试的时候,经常会遇到一些控件因为不同的条件显示不同的颜色,在学习了UiAutomator图像处理之后,自己尝试写了一个方法来处...

    八音弦
  • 2016年总结

    2016年,坚持做了几件事:1、坚持写博客;2、坚持维护公众号;3、坚持答疑解惑;4、坚持学习;5、坚持早起;6、坚持锻炼;7、坚持存钱……

    lzugis
  • 高级指针话题-函数指针

    如果有int *类型变量,它存储的是int类型变量的地址;那么对于函数指针来说,它存储的就是函数的地址。函数也是有地址的,函数实际上由载入内存的一些指令组成,而...

    编程珠玑
  • 870. Advantage Shuffle

    思路 用priority_queue<pair<int, int>>解决。使用贪心算法,按数组A从大到小尽可能在数组B中找到匹配的元素即可。就像是“田忌赛马”...

    平凡的学生族
  • 《数据结构与算法》Day.1 最大子列和

    ———————————————— 版权声明:本文为博主「Sofar」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 ...

    风清醉
  • mysql中int长度的意义

    疑问: mysql的字段,unsigned int(4), 和unsinged int(5), 能存储的数值范围是否相同。如果不同,分别是多大? 答: 无论是i...

    joshua317
  • 不相交集类

    等价关系:自反性,对称性,传递性 class DisjSets//不相交集的类架构 { public: explicit DisjSets(int nu...

    用户1154259

扫码关注云+社区

领取腾讯云代金券