Answers:
我已经写了一些工具,正是为此,因同样的沮丧:https://github.com/dlenski/tetherback
这些工具是用Python编写的,可adb
用于创建nandroid风格的备份(来自的原始分区图像dd if=/dev/block/mmcblk0pXX
)或TWRP风格的备份(原始分区图像和ext4
分区的tarball的混合物)。
他们尝试探查正确的分区布局,并显示备份进度:
$ ./twrp_backup.py
Device reports TWRP kernel (3.4.0-bricked-hammerhead-twrp-g7b77eb4).
Reading partition map for mmcblk0 (29 partitions)...
partition map: 100% Time: 0:00:03
Saving TWRP backup images in twrp-backup-2016-03-17--18-53-12/ ...
Saving partition boot (mmcblk0p19), 22 MiB uncompressed...
boot.emmc.win: 100% Time: 0:00:05 3.10 MB/s
Saving tarball of mmcblk0p25 (mounted at /system), 1024 MiB uncompressed...
system.ext4.win: 2% ETA: 0:06:29 2.69 MB/s
这是一项正在进行的工作,非常欢迎反馈!
要求:
progressbar
需要包装(pip install progressbar
应该这样做)adb
(Android调试桥)命令行工具编辑:看来,到https://github.com/dlenski/tetherback的大部分流量都来自此线程。以下评论中描述的早期数据损坏问题已全部解决;现在,tetherback包括非常强大的反腐败检查。
gzip
通过修改L46禁用该功能,但我怀疑这实际上是问题所在。您正在运行Linux还是Windows?不幸的是,在Windows下,adb会处理CRLF字符,这意味着使用我正在使用的技术无法通过二进制字符传输二进制图像。如果需要,我可以为此编写解决方法。
XDA开发人员的一个线程描述了如何不使用sdcard将nandroid备份直接备份到您的计算机。当然,它仅适用于有根设备。进一步的要求包括Posix OS(例如Linux / MacOS)(Windows用户可以使用Cygwin进行仿真)和ADB(因此,整个SDK或至少是最小安装量)。此外,busybox
该设备必须可用并且USB调试已激活。
本文逐步介绍了创建Nandroid备份所需的命令。基本上,它是通过命名管道使用dd来创建设备分区的块级副本– 基本上是nandroid 备份。
我注意到(如果您已经配置了ADB,您的电话已经植根并且您正在Linux系统或类似系统上工作),可以通过一个单行转储分区内容:
adb pull /dev/block/mmcblk0
这与XDA线程中获取闪存的逐位内容中所描述的内容相同,除了没有与netcat和管道共舞(我猜这可能取决于环境,可能不需要)。显然,复制数据时不应在闪存上安装任何分区(例如,从恢复中进行操作,而adb mount
不会列出已安装的任何分区),否则,在Android决定在该位置写入数据的地方,备份风险会不一致备份时间。
注意,对于还原很简单:
pv mmcblk0 | adb shell dd of=/dev/block/mmcblk0
无法使用,因为adb shell
不支持管道。但是,如果您能以某种方式dd of=/dev/block/mmcblk0
在设备本身上进行备份,我想它应该可以还原您的备份。不过,请不要相信我,它可能会使您的手机变砖。我还没有测试过 到目前为止,我只需要恢复一个分区dd
就可以了。
Settings > Developer> tap build 7 times
)Settings > Developer > USB Debugging
)使用恢复来避免操作系统根目录限制
./adb reboot recovery
做拉
./adb pull /dev/block/mmcblk0 mmcblk0.img