关于 u 盘/硬盘/记忆卡...恢复数据的经验分享

这篇经验分享我本来是要放在某个老掉牙论坛里的,但过去好几个小时迟迟没人审核所以就先发到这个论坛上了 (之前对那个论坛上的某网友说过会写一篇关于这个的经验分享),因为论坛上基本都是 windows 用户所以这里的软件教程都在说 testdisk 的 windows 移植版本,但对于和我一样的炒鸡菜鸟 Linux 用户说不定有一定帮助。

首先是声明:本人没有任何专业知识,所以这只是篇经验分享,按照本文方法导致数据丢失损坏概不负责 (即使暂时好了也不保证之后不出问题)。

本文图片较多,观看请注意流量。
本文适用于 u 盘记忆卡 sd 卡 tf 卡机械硬盘固态硬盘,以下为打字方便只写 u 盘。

u 盘损坏之类的教程网上有很多,本文的方法也不一定适合你的 u 盘,所以如果网上的方法不行或者本文的情况适合你可以试试,但不管怎样建议将备份数据的章节看完。
本文的经验都是我用 Linux 系统上自带的软件捣鼓的,windows 上还没试验过 (不过我觉得这些经验应该是通用的),而且本文的重点 testdisk 有 windows 移植版,所以值得一看。

因为我也只是个半调子,还有好几个 u 盘自己也修不好,所以欢迎大家补充和指出错漏。

先说下我遇到过的情况:
1.u 盘插入电脑后没反映 (或者响了一声啥也没有)
2.不小心删除了一些文件想要恢复它。
3.u 盘总是在传输文件的途中突然消失
4.不知为何 u 盘开启了只读
前三个都可以试试本文的方法,但是第四个我也不知道该怎样解除只读,有大佬路过希望解答一下。
5.进行了不明所以的误操作总之 u 盘出问题了。

首先最重要的一点,u 盘出了问题一定要先把里面的数据保存出来,而不是先去格式化它或者搞各种可能会删除文件的操作!!!!!!

举个例子:我之前不小心把整个机械硬盘给覆盖删除了,虽然及时停止覆盖但硬盘显示不出来了,我就用 testdisk 这个修复软件扫描,发现大部分文件都能恢复,结果当时电脑上没空间了,就把硬盘随手一放,睡了一觉第二天醒来把这事情忘了,结果手剑重新分区导致 testdisk 再扫描上面的文件全都恢复不了了。

所以不管 u 盘出了啥问题,首先一定要把里面的数据都取出来保存 (下面会说具体方式) 好再对 u 盘进行各种操作!!!!

总之 u 盘出问题了可以试试下面的方法:
1.删除 u 盘上的所有分区
2.新建一个新的分区
3.把这个新的分区格式化
(上面三点在 Linux 上可以用 fdisk+mkfs 来完成,我要是还没好我就用 fsck 或 testdisk 看能修复不。)

比如说插入电脑却啥也没显示,但是虽然"我的电脑里"/图形界面,显示不出来如果用分区/修复工具 (比如 fdisk,mkdfs…) 可能就能检测到 u 盘了,然后删除重建格式化分区。
如果这样还不行估计就得靠修复软件来搞了,关于分区格式化之类的教程网上已经有很多了,这里就不提了,可别看完了马上就去分区了,先看下底下的保存数据的方法。

无论是恢复已经删除过的文件,取出备份损坏 u 盘的数据,还是更高级的操作在这篇教程里都需要用到下面这款修复软件了 (比如 Linux 上就可以直接用 dd 命令备份整个 u 盘,而且 dd 不算修复软件)。

#Linux 用户可以看这一小节,windows 用户可以直接跳过:
dd 备份的是整个 u 盘的状态,而不仅仅是 u 盘上的文件!所以假设有两个 128G 的 u 盘一个损坏一个正常,可以先将损坏了的 u 盘整个用 dd 保存成镜像,然后用 dd 直接把正常 u 盘整个覆盖到损坏 u 盘上,这样原本的 u 盘只要硬件没坏应该就能恢复正常了,然后再把保存的镜像一解压打开复制回 u 盘上。
不过感觉这俩 u 盘最好是同一个品牌同一个型号的。
(使用 dd 命令的时候一定要在头脑清醒的状态下至检查有没有输错,比如我上面说的硬盘检测不出来的问题就是因为手剑把 sdc1 打成 sdb1,就错了一个字母造成了巨大损失。还有记得用 sync 命令?)

首先是软件介绍:

testdisk 是一个开源免费的绿色软件 (解压即用),支持 windows,DOS,Linux,MAC,Sun 和 BSD 家族的系统,
TestDisk 是一款 * 强大 * 的免费数据恢复软件! 早期主要是设计用来在使用有缺陷的软件,病毒或人为误操作(如不小心删除分区表)导致的分区丢失后,帮助用户恢复丢失分区,或修复不能启动的磁盘。 用 Testdisk 来恢复分区表非常简单。
TestDisk 支持以下功能:

  • 修复分区表, 恢复已删除分区
  • 用 FAT32 备份表恢复启动扇区
  • 重建 FAT12/FAT16/FAT32 启动扇区
  • 修复 FAT 表
  • 重建 NTFS 启动扇区
  • 用备份表恢复 NTFS 启动扇区
  • 用 MFT 镜像表 (MFT Mirror) 修复 MFT 表
  • 查找 ext2/ext3/ext4 备份的 SuperBlock
  • 从 FAT,NTFS 及 ext2 文件系统恢复删除文件
  • 从已删除的 FAT,NTFS 及 ext2/ext3/ext4 分区复制文件.

TestDisk 拥有两种模式:新手模式和专家模式。对于那些对数据恢复技巧了解很少,甚至完全一无所知的人来说,Testdisk 可用于收集非启动分区的详细信息,后续再发送给专业数据恢复人员进一步分析。 对于那些对数据恢复较为熟悉的人员来说, Testdisk 是一款现场非常容易操作的数据恢复工具。

更多详情可以去官网了解:https://www.cgsecurity.org
官网上也有使用教程,本文介绍的只是 testdisk 功能里的几个,这个软件我也不太会用,如果需要更多帮助就去官网或者网上搜教程吧。
(上不去官网下载的话我附件里也上传了,目前版本是:
TestDisk & PhotoRec 7.2 (Feb 22 2024), Data Recovery 这个软件官网上是和另一款 PhotoRec 捆绑在一起的,这个 Photo 是个图片修复软件,本文不管,还有不敢下载官网上的 BETA(测试) 版本,因为不够稳定。
testdisk 是从 Linux 上移植过来的,只有纯文字的命令行界面,目前 windiows 上的功能没有 Linux 上多,不过恢复个删除的文件分区之类的是够用了。
关于 testdisk 的基本操作:使用上下左右箭头选择,Enter 确定,按 q(quit 的缩写) 返回/退出,用鼠标选中文字后按下右键复制,然后再粘贴到网页翻译里就好了。

因为这个软件是纯英文的,所以用的时候建议打开网页翻译。

本文只简单介绍了 testdisk 的两个恢复文件/分区/保存镜像的功能,testdisk 上还有很多功能没介绍,比如修改磁头扇区尺寸啥的 (主要因为我不会用…),所以这篇文章只算经验分享,更详细的教程建议去官网查找 (windows 用户想使用更多功能得先会用 Linux 系统…)

接下来就是食用教程了:
0.插入出问题的 u 盘
1.解压下载好的压缩包
2.打开 testdisk.exe
然后会出来个黑框框:

上面是它目前的版本和软件介绍以及声明,咱要看最下面这几行:
用小箭头可以选择,然后按 Enter 确定,一般直接选 Create 就行了。

  • 选择 Create 来让 Testdisk 新建一个日志文件( log file),里边包含了一些技术信息和消息, 除非你要往一个日志里追加信息 log 或者 你从只读存储器里执行 TestDisk 而且必须在别的地方建立日志 log。
  • 选择 None 如果你不想让过程中的细节和消息记录到日志文件里 log file (比如当 Testdisk 是在只读位置执行的时候,这很有用).


接下来在这里选择设备,已经选中了我的 u 盘 (Drive F 说明我的 u 盘被分配为 F 盘了),接着按 Proceed(继续)
最底下的提示的意思是 :
注意:必须正确检测磁盘容量才能成功恢复。如果上面列出的磁盘大小不正确,请检查 HD 跳线设置和 BIOS 检测并安装最新的操作系统补丁和磁盘驱动程序。


然后会出现选择分区表类型 (Please select the partition table type.),一般直接 Enter 用默认的就好了。


然后到了这里可以先选 quit( 每不同情况的 u 盘可能顺序不一样,我记得应该先到下一张图的那个菜单才对,但是我这个 u 盘是先到这里,可能是推荐我先点它推荐的选项吧。)


在这个菜单里选 [ Advanced ] Filesystem Utils(高级,文件系统实用程序)


这样就又回到这里了,底下的每个选项选中后都有介绍,具体的复制到网页翻译上吧。


Drive F 指的就是我的 u 盘了,
Partition 是分区的意思,可以看到图中我的 u 盘就一个 fat32 的分区,选好分区后 (有两个以上分区的时候,如果还有分区没显示出来先看完全文吧,下面会说。) 点 Undelete,恢复删除的文件(篇幅原因很多选项没翻译,感兴趣的话可以粘贴到网页翻译上查)


从上面这张图开始就是重点了,因为这个软件是从 Linux 移植过来的,所以最左边文件的描述也和 Linux 命令行一样,最左边带 d 的表示这是个文件夹 (directory 的缩写),左边是个 - 的代表这是个文件而不是文件夹。

没记错的话 r 代表可读 (read),w 代表可写 (wirte),x 代表可执行 (executable),从左往右依次表示管理员对这个文件的权限,当前用户的权限,其他用户的权限,这东西没啥用,咱只要看最左边有没有 d 就行了,(需要在意文件权限的只有之前专门给文件设置过的人,其他读者可以不管这个)。
然后红色的文件是已经删除了的,白色的是没删除过的,这两种文件只要被检测到了 (也就是像图中一样显示出来了的话) 都能恢复。
最底下的说明是:
按 q 返回,:(冒号键) 选中文件,按 a 选择所有文件,大写 C 是复制已经选中了的文件,小写 c 是复制当前文件 (光标停留处的文件)。


如图我选中了三个文件,然后按了大写 C 想把它们从 u 盘复制到我的电脑上。


这里的选择要保存到哪个文件夹里,Directory E:¥testdisk-7.2 中:Directory E 是本地磁盘 E 的意思,¥符号后面是具体的文件夹。
所以这句话的意思就是我目前在 E 盘下的"testdisk-7.2"文件夹,最上面的.和…是 Linux 命令行中的缩略符,.代表当前文件夹,…代表目前所在文件夹的上一个文件夹,这里按大写 C 就可以直接复制到这个文件夹了,按 q 返回,但是我想保存到其它的文件夹里,所以这里先按左箭头返回上一个文件夹 (或者选中…按 Enter 也行),右键头反之。


如图,按了两下左键头后我来到了"我的电脑",上面显示了四个文件夹,分别是:c 盘,d 盘,e 盘,和 f 盘 (这个是我的 u 盘,每个人电脑上的硬盘数量不一样,所以记得确认下自己的 u 盘的盘符是 f 还是 eghigklmn…在这里选中后查看下里面有啥东西就知道了,毕竟都是自己亲手放进去的。
最上面第一章图那里也能看哪个设备在哪个盘,可以通过大小和右边的设备名判断。)
我这里接着打开了 d 盘:


这里是我 d 盘上的所有文件,按几下下箭头可以查看更多。可以看到上面的描述变成 Directory D 了,¥后面啥都没有说明只打开了 d 盘还没打开 d 盘里的其他文件夹。


如图我打开了 d 盘里的小说文件夹,能看到这个文件夹里有两个 txt 文件和一个叫做神的记事本的文件夹 。我就打算保存在这里了,所以按了大写 C


如图,又回到了 u 盘,上面绿色的文字显示复制完成,3 个文件成功,0 个文件失败。


打开小说文件夹发现确实复制上去了。


接下来按 q 再回到这个菜单,选择 imgae creation 可以把整个 u 盘 (不管你 u 盘装满没,128G 大小的就会占用 128G 空间,32G 的就会占用 32G 空间) 以光盘镜像的形式保存到你选择的文件夹里,这个文件记得可以用解压软件或者虚拟光驱软件打开 (linux 用户直接用 dd 命令就行了,记得 sync?)。

(强烈推荐储存空间够且 u 盘里面有重要文件的人这么干,多一个备份总是好的,这大概是把整个 u 盘的状态 (不光是文件) 都保存下来了,不过刚才那里也可以直接按 a 全选然后把所有文件复制出来。),注意这个选项很费时间,毕竟要复制几十上百 G 的文件,可以去泡杯咖啡看个动漫。

目前 testdisk 的 windows 移植版 7.2 有个 BUG,有的时候某处的文字会莫名消失,按 q 返回再回来刷新下就好了,不过有的时候正在保存文件不敢随便中断返回,但如果它是选项的话其实它还在哪里,只是看不见了但还能选…
还有如果你发现进度条怎么不变化了,可能是因为你点到鼠标左键或者碰到什么按键了,再点一下就能继续了 (不要在 stop 选项上按 Enter 哦~),千万不要以为是死机了然后关了重启哦~(除非真死机了…)

顺便提一句电脑上的文件只是删除了的话并不会无法恢复,其实它还在那,只是看不见了,相当于做了个标记。只有在有新文件来的时候才会被覆盖掉。

机械硬盘和固态硬盘/u 盘之类的闪存介质又不太一样,详情请看我从网上大佬的文章里剽窃的一段话:
(没兴趣可以跳过,原帖链接:https://program-think.blogspot.com

★“** 机械硬盘” 与 “固态硬盘(闪存)”【删除数据】的差异——损耗均衡技术 **
◇“** 损耗均衡技术” 是啥玩意儿?**
为了介绍后面的章节,需要先扫盲一个小知识——损耗均衡技术(洋文叫 “wear leveling”)。
考虑到本文的大部分读者不是 IT 硬件方面的专业人士,俺尽量通俗地扫盲一下。
所谓的 “固态硬盘”(SSD),是以【闪存】作为永久性存储介质。平时咱们用的 “U 盘” 也是以【闪存】作为介质。(为了打字省力,本文以下章节凡是提到 “闪存介质”,就是指——“采用闪存作为存储介质” 的各种东西的【总称】)
“闪存介质” 相比 “机械硬盘” 的一大【缺点】是——写入次数的上限比较低。如果某个存储单元的数据反复更改(反复写入),达到上限后,这个存储单元就坏掉(变为 “不可用”)。
“闪存介质” 的厂商为了解决这个问题,采用了 “损耗均衡技术”(详细介绍请看维基百科的 “这个链接”)。比如某个文件,原先存储在 “a 单元”,当你更改了文件内容并保存,新的内容就不在 “a 单元” 了,而是把新内容存到一个用得最少的 “b 单元”。此时,“a 单元” 里面依然有该文件的【旧内容】。
请注意,这个技术是由【硬件层面】(闪存介质的控制器)实现的,对操作系统【不可见】。

◇“** 损耗均衡技术”【不利于】彻底删除数据 **
聪明的读者,看完前一个小节,已经发现问题所在了。
很多时候,为了彻底删除文件,要用 “垃圾数据(随机数据)” 去覆盖文件的原有内容,从而让原有内容【不可恢复】。这个招数对 “机械硬盘” 是 OK 的,但对 “闪存介质” 就不灵了。因为 “损耗均衡技术” 使得你覆盖的内容存到的【别的】单元,根本【没达到】你想要的目的。
而且俺刚才也说了——“损耗均衡技术” 是由硬件层面的存储控制器实现,对操作系统不可见。所以,用【软件方式】难以证明某个存储单元是否【真正被覆盖了】。

◇** 对【闪存介质】,如何彻底删除文件?**
综上所述,要想在 “闪存介质” 中彻底删除文件,你需要换一种思路,大致如下:

  1. 先简单删除该文件
  2. 用垃圾数据(随机数据)填满该存储介质的剩余空间——要 100% 填满。
    (这样才能确保——原先保存过敏感数据的单元,已经被垃圾数据覆盖掉)

注意事项:要填满的是【物理硬盘】的 “剩余空间”,而不是【分区】的 “剩余空间”。
举个例子:
假设你的固态硬盘有多个分区。敏感文件在 “分区 1”,你把敏感文件删除后,光填满 “分区 1” 的剩余空间是【不够】滴。
正确做法是——你要把【所有】分区的剩余空间都填满,才能确保之前保存过敏感数据的单元,确实被垃圾数据覆盖掉了。

◇** 闪存厂商提供的工具,是否可信 ** /** 可靠?**
某些闪存介质的厂商会提供一些配套的工具/软件,据说可以提供【彻底删除】的功能。
对此,俺表示谨慎的怀疑。因为无法验证其效果。
所以,为了保险起见,还是老老实实去【填满剩余空间】吧。

以下就是本文的最后部分了:没想到还没介绍几个功能文章会变得这么长…


先按 q 回到这个菜单,选择 Analyse
[分析] 分析当前分区结构并查找丢失的分区 (还能恢复删除的文件)


这里会看到目前我的 u 盘上有一个 fat32 的分区,上面两个 Warning 说我 u 盘有啥问题我也懒得管了,反正还能正常用就行了,这个东西前面菜单里的选项好像可以设置,遇到这个问题的
可以自己研究下。
然后选 Quick Search(快速查找)
这段时间可以先出去散个步,买包酸奶,吃个小吃…


找完发现就这一个分区,按 t 可以改变类型,p 可以列出文件然后恢复 (就像刚才那样),Enter 是继续。
这里如果已经把文件都找回来了保存好了就可以关软件了,但是如果还有分区没扫出来就继续点 Deeper Search(深度搜索)


这里我懒得花时间深度搜索,搜了几秒就停止搜索了,但还是找出来了个我以前删掉的分区。
选择好分区,然后按 p 列出文件,就像刚才那样保存到你想要的文件夹就行了。

如果做了你恢复分区之类的操作,完毕后就点 write(写入或者说翻译成保存)然后可能会提示你重启电脑,按照提示来吧。
不同的 u 盘软件给的提示也不同,我这个只算参考,不会的单词就放网页翻译吧。

最后再上传一下 testdisk 这个软件(能上官网的建议去官网下载),xp 之类 32 位系统的就下 32 版本的,win7 之类 64 位的就下 64 位的 (这些分卷压缩包记得全下完然后放到同一个文件夹里解压)。
有啥需要修改的地方或者没说清楚的地方可以在评论区里跟我说下。
最后就是靠大佬补充了…
我上传这么多附件是因为 testdisk 的官网在国外,不会翻墙的人没法上去下载,而且百度网盘啥的台麻烦了。

testdisk_win32-7.2.zip.001.zip (3 MB)
testdisk_win32-7.2.zip.002.zip (3 MB)
testdisk_win32-7.2.zip.003.zip (3 MB)
testdisk_win32-7.2.zip.004.zip (3 MB)
testdisk_win32-7.2.zip.005.zip (3 MB)
testdisk_win32-7.2.zip.006.zip (3 MB)
testdisk_win32-7.2.zip.007.zip (3 MB)
testdisk_win32-7.2.zip.008.zip (3 MB)
testdisk_win32-7.2.zip.009.zip (1.6 MB)
testdisk_win64-7.2.zip.001.zip (3 MB)
testdisk_win64-7.2.zip.002.zip (3 MB)
testdisk_win64-7.2.zip.003.zip (3 MB)
testdisk_win64-7.2.zip.004.zip (3 MB)
testdisk_win64-7.2.zip.005.zip (3 MB)
testdisk_win64-7.2.zip.006.zip (3 MB)
testdisk_win64-7.2.zip.007.zip (3 MB)

testdisk_win64-7.2.zip.008.zip (3 MB)
testdisk_win64-7.2.zip.009.zip (1.4 MB)

最后说下每次拔 u 盘前都要记得卸载/安全弹出它,关机要正常关闭不要拔电源和按机箱的电源按钮,机箱有声音不敢老拿手去拍它,包括从 nokia 上拔下记忆卡之前记得先在关机选项 (比如 5730 是按一下挂电话键打开关机菜单) 那里选择拔除记忆卡来关闭所有打开的文件,或者关机后再弹出记忆卡。

zypper in testdisk 就好啦(