EraserKing 发表于 2016-6-3 10:42

MTP下成功恢复数据(以及Nexus 6P为啥是个坑)

又是我。
俗话说事不过三。

前情提要:http://bbs.saraba1st.com/2b/thread-979851-1-1.html

换了Nexus 6P之后,本来一切安好。
直到昨天我从Bootloader想进Recovery,手滑选中了Factory
没有任何提示(是的,没有确认),自动重启。

顿觉不妙,强制关机
再次正常重启,发现完全清空,内置存储也没有了。
唯一的问题在于,显示内置存储已使用20G,然而找不到任何原来的文件。

此时感觉文件依然存在,只是“隐藏”起来了。但是MTP下不能用各种文件恢复工具。
于是根据网上教程,dump出分区再用文件恢复工具扫描。

方法如下(以Nexus 6P为例):
1. 打开USB调试,并保证电脑可以通过ADB连接至手机

2. 将手机ROOT,并安装busybox(安装到/system/bin下面)

3. 列出所有分区
电脑端执行如下命令(手机端注意给ADB Shell授权)adb forward tcp:5555 tcp:5555
adb shell
su
cat /fstab.angleradb forward是为了后面恢复时使用。也可以在实际恢复之前再运行。
其中angler为机型代号,别的机器请自行替换。
如果你不清楚,可以ls /并寻找其中的fstab文件。

4. 寻找恢复的分区# Android fstab file.

#<src>                                       <mnt_point><type><mnt_flags and options><fs_mgr_flags>

# The filesystem that contains the filesystem checker binary (typically /system) cannot

# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK



/dev/block/platform/soc.0/f9824900.sdhci/by-name/system       /system         ext4    ro,noatime,barrier=1                                                    wait

/dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor       /vendor         ext4    ro,noatime,barrier=1                                                    wait

/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata   /data         ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,discard,errors=panic wait,check,encryptable=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata

/dev/block/platform/soc.0/f9824900.sdhci/by-name/cache      /cache          ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic wait,check

/dev/block/platform/soc.0/f9824900.sdhci/by-name/persist      /persist      ext4    nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit,errors=panic wait,notrim

/dev/block/platform/soc.0/f9824900.sdhci/by-name/modem      /firmware       vfat    ro,noatime,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0      wait

/dev/block/platform/soc.0/f9824900.sdhci/by-name/boot         /boot         emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/recovery   /recovery       emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/misc         /misc         emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/modem      /modem          emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/sbl1         /sbl1         emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/pmic         /pmic         emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/hyp          /hyp            emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/tz         /tz             emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/rpm          /rpm            emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/sdi          /sdi            emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/aboot      /aboot          emmc    defaults                                                      defaults

#/dev/block/platform/soc.0/f9824900.sdhci/by-name/imgdata      /imgdata      emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/frp          /persistent   emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/keymaster    /keymaster   emmc    defaults                                                      defaults

/dev/block/platform/soc.0/f9824900.sdhci/by-name/cmnlib       /cmnlib      emmc    defaults                                                      defaults

/devices/*/xhci-hcd.0.auto/usb*                               auto         auto    defaults                                                      voldmanaged=usb:auto

上一步中输出的结果如上。
易知,数据是存放于/data上,所以要恢复的分区是/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata5. 在手机侧输出内容busybox nc -l -p 5555 -e /system/bin/busybox dd if=/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdataif=后面的内容就是上一步中得到的分区。

6. 在电脑侧接收内容
在电脑侧安装Cygwin,并且安装时要额外安装nc和pv。
打开Cygwin,并输入nc 127.0.0.1 5555 | pv -i 0.5 > data.raw如果前面一切顺利,就会在电脑侧看到进度

7. 等待
我的机器是64G的Nexus 6P,实际可用空间约54G。
接收速度约为7MB/s,因此大约需要2小时。
注意硬盘空间。需要的空间与实际的分区大小相同,这里也为54G。

8. 恢复数据
上一步中得到的data.raw就是分区的完整备份。
网上的方法是挂载为VHD,再恢复。这样比较烦。
我推荐使用R-Studio,直接Open Image,再扫描即可。

扫描完成后,发现我的文件在/lost+found下面,目录结构完好。
恢复出来之后,绝大多数文件都正常。损失不大。
我再次把手机完全格式化(修正空间问题),并把文件导回手机。一切正常。

完。

LGS 发表于 2016-6-3 11:09

本帖最后由 LGS 于 2016-6-3 11:11 编辑

nc是好东西,我天天都在用,尤其是从lan内服务器打包代码到pc上

不过手机存储确实不安全,相对于楼主这种操作,丢失手机才是更大的问题。我一般定期会备一下东西到pc,之前还用过btsync

EraserKing 发表于 2016-6-3 11:28

LGS 发表于 2016-6-3 11:09
nc是好东西,我天天都在用,尤其是从lan内服务器打包代码到pc上

不过手机存储确实不安全,相对于楼主这种 ...

nc么 多年前就看到一个称号 网络瑞士军刀
丢手机的话 相比于手机 上面的内容其实倒没什么太重要的
照片走Dropbox 联系人 邮件之类的都是Google搞定
就是微信可能要丢点东西

LGS 发表于 2016-6-3 11:49

EraserKing 发表于 2016-6-3 11:28
nc么 多年前就看到一个称号 网络瑞士军刀
丢手机的话 相比于手机 上面的内容其实倒没什么太重要的
照片走 ...

虽然用n5,但不信任google,所以联系人什么的不会往google同步,都是用软件定期备份,还有通话记录和短信。其它软件,照片啥的直接备份文件夹。

google这清空做法不对啊,/lost+found的目录下的东西是占空间的,并不像ms的回收站那样会自动释放空间。结果普通客户存的东西如果不对还以为东西全删了,空间就这么浪费了。

如果说为了给客户留下恢复余地,这也不对啊,楼主这些操作明显不是正常客户能理解并执行的。

EraserKing 发表于 2016-6-3 11:54

LGS 发表于 2016-6-3 11:49
虽然用n5,但不信任google,所以联系人什么的不会往google同步,都是用软件定期备份,还有通话记录和短信 ...

反正我也不在美国 Google又不能把我怎么样……棱镜也管不着我头上是不?

至于/lost+found的问题 我倾向于是因为不完整的格式化(格式化过程中强行重启)
然后再次启动时,磁盘扫描时“存”到l+f里面的

LGS 发表于 2016-6-3 12:17

EraserKing 发表于 2016-6-3 11:54
反正我也不在美国 Google又不能把我怎么样……棱镜也管不着我头上是不?

至于/lost+found的问题 我倾向 ...

原来强制关机了?没仔细看。

那有可能,再启动的时候发现分区有错误就扔那里了

hippias 发表于 2017-12-5 08:07

挖个坟,问一下mtp模式删了tf卡里的东西还有得救没

—— 来自 Sony D6653, Android 6.0.1上的 S1Next-鹅版 v1.3.2.1-fix-play

EraserKing 发表于 2017-12-5 08:42

hippias 发表于 2017-12-5 08:07
挖个坟,问一下mtp模式删了tf卡里的东西还有得救没

—— 来自 Sony D6653, Android 6.0.1上的 S1Next-鹅版 ...

直接拆卡下来恢复吧,何必这么折腾

Geminize 发表于 2017-12-5 09:43

hippias 发表于 2017-12-6 06:57

EraserKing 发表于 2017-12-5 08:42
直接拆卡下来恢复吧,何必这么折腾

直接拆卡扫描认不出来,难道是因为我之后又删除过一次的原因?

—— 来自 Sony D6653, Android 6.0.1上的 S1Next-鹅版 v1.3.2.1-fix-play

hippias 发表于 2017-12-6 06:57

EraserKing 发表于 2017-12-5 08:42
直接拆卡下来恢复吧,何必这么折腾

直接拆卡扫描扫不出来内容,难道是因为我之后又删除过一次的原因?

—— 来自 Sony D6653, Android 6.0.1上的 S1Next-鹅版 v1.3.2.1-fix-play

hippias 发表于 2017-12-6 07:20

EraserKing 发表于 2017-12-5 08:42
直接拆卡下来恢复吧,何必这么折腾

直接拆卡扫描扫不出来内容,难道是因为我之后又删除过一次的原因?

—— 来自 Sony D6653, Android 6.0.1上的 S1Next-鹅版 v1.3.2.1-fix-play
页: [1]
查看完整版本: MTP下成功恢复数据(以及Nexus 6P为啥是个坑)