【小技巧】如何找回安卓手机误删的资料

很长一阵子没有更新博客了,主要是有一些很烦心的事,等事情落定后,应该就能稳步更新博客了。

前两天我碰到了一件很头疼的事,自己的小米 5 刷机后把内置 sd 卡的资料全部删除了!!!

可能是小米刷机包脚本的问题,也可能是我自己的问题,但现在不是讨论这个的时候,我的首要任务是恢复被删除的数据!

分析

按照我在 PC 上的经验,需要将手机内置的 sd 卡挂载成一个磁盘,然后用 diskgenius 等数据恢复软件恢复数据。(这个思路和 PC 端数据恢复差不多,我这里不做过多描述)

但是!MIUI8 对内置 sd 卡的读写方式是 MTP(Media Transfer Protocol) 模式!在 windows 下根本不能识别成一个磁盘!也就是用数据恢复软件根本不能识别手机内置 sd 卡!

针对 MTP 模式的手机,这里有两种处理方式,一种是在手机端操作,一种是在 PC 端操作。

手机端处理方式就是通过手机端的数据恢复软件 diskdigger 来恢复数据,操作复杂程度极低,但是恢复率也很低!

PC 端处理方式就是将手机内置 sd 卡这个分区的 raw 数据全部读出,然后通过 PC 端的数据恢复软件将其挂载成一个虚拟磁盘来进行数据恢复处理。这种方式的操作复杂度很高,需要对 linux 系统有一定的操作经验,但是恢复率极其高,而且恢复率完全取决于你所使用的恢复软件。

手机端恢复数据

手机端恢复数据有一个缺点就是会不停的读写手机 sd 卡,有数据恢复经验的童鞋肯定知道,你写入的数据越多,你恢复数据的可能性越小,所以我们在手机端恢复时一定要越快越好,尽量减少对 sd 卡的读写。

首先,你需要 root 手机,关于怎么 root 手机不在本博文讨论范围。

然后就是安装 diskdigger 数据恢复软件,打开软件,允许 root 权限。

从上面可以看出,手机中有很多分区,这里我们选择 data 分区即可。

然后就是选择需要恢复的数据类型,你想要恢复什么类型的数据就勾选什么类型,然后点击 OK 进行数据恢复。

剩下的就是等待了,等待进度条走完。

PC 端恢复

鉴于手机端数据恢复软件的算法不强大,想要更高成功率地恢复数据,我们还是要借助 PC 端的数据恢复软件。

首先,手机需要 root,并且打开 usb 调试模式,同时手机端需要安装 busybox(MIUI 自带)。

然后,PC 端准备 adb 调试工具,并且安装 adb 驱动,保证手机的正确连接。另外需要准备 cygwin、nc.exe 和 pv.exe 这两个小命令行工具,adb 调试工具、nc.exe 和 pv.exe 放到 cygwin 的 bin 目录下(或者加入系统环境)。

接下来执行如下命令

adb forward tcp:666 tcp:666
adb shell
su
busybox nc -l -p 666 -e busybox dd if=/dev/block/sda

其中的 /dev/block/sda 需要你通过 cat /proc/partitions 查看,简单判断最大的那个分区。

再新开一个命令行窗口,输入如下命令

nc 127.0.0.1 666 | pv -i 1 > sda.raw

等待数据传输完毕,在 nc 所在目录就会看到 sda.raw 文件,这个文件就是包含内置 sd 所有磁盘信息的文件。

然后就是选择一款数据恢复软件,以加载虚拟磁盘的方式加载这个 raw 文件。

剩下的就是正常的数据恢复操作了。

最后

其实,最好的方式就是定时备份、备份、备份!