I have written some tools for exactly this purpose, due to similar frustrations: https://github.com/dlenski/tetherback
These tools are written in Python and use adb
to create either nandroid-style backups (raw partition images from dd if=/dev/block/mmcblk0pXX
) or TWRP-style backups (mixture of raw partition images and tarballs for ext4
partitions).
They attempt to probe the correct partition layout, and show the progress of the backup:
$ ./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
This is a work in progress—feedback is very welcome!
Requirements:
- Python 3.3+ under Linux/OSX/Windows.
progressbar
package is needed (pip install progressbar
should do it)
adb
(Android Debug Bridge) command-line tools- Rooted Android device with TWRP recovery installed.
- The requirement for a rooted device and a custom recovery is never going to go away: if you don't have root access, then you have no means to copy the entire contents of your device's memory, simple as that.
EDIT: Looks like most of the traffic to github.com/dlenski/tetherback comes from this thread. The early issues with data corruption described in the comments below have all been resolved; tetherback now includes very strong checks against corruption.