婆罗门
精华
|
战斗力 鹅
|
回帖 0
注册时间 2007-7-13
|
又是我。
俗话说事不过三。
前情提要: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.angler
复制代码 adb forward是为了后面恢复时使用。也可以在实际恢复之前再运行。
其中angler为机型代号,别的机器请自行替换。
如果你不清楚,可以并寻找其中的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/userdata
复制代码 5. 在手机侧输出内容- busybox nc -l -p 5555 -e /system/bin/busybox dd if=/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata
复制代码 if=后面的内容就是上一步中得到的分区。
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下面,目录结构完好。
恢复出来之后,绝大多数文件都正常。损失不大。
我再次把手机完全格式化(修正空间问题),并把文件导回手机。一切正常。
完。
|
|