В моем телефоне недостаточно места для хранения файлов резервных копий, поэтому мне интересно, есть ли способ сделать резервное копирование и восстановление Nandroid с помощью файлов, хранящихся на компьютере.
В моем телефоне недостаточно места для хранения файлов резервных копий, поэтому мне интересно, есть ли способ сделать резервное копирование и восстановление Nandroid с помощью файлов, хранящихся на компьютере.
Ответы:
Я написал несколько инструментов именно для этой цели из-за подобных разочарований: https://github.com/dlenski/tetherback
Эти инструменты написаны на Python и используются adb
для создания резервных копий в стиле nandroid (необработанные образы разделов из dd if=/dev/block/mmcblk0pXX
) или резервных копий в стиле TWRP (смесь необработанных образов разделов и тарболлов для ext4
разделов).
Они пытаются проверить правильность расположения разделов и показать ход резервного копирования:
$ ./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 Debug Bridge) инструменты командной строкиРЕДАКТИРОВАТЬ: Похоже, большая часть трафика на https://github.com/dlenski/tetherback приходит из этой темы. Первые проблемы с повреждением данных, описанные в комментариях ниже, все были решены; tetherback теперь включает очень сильные проверки против коррупции.
gzip
, изменив L46 , но я сомневаюсь, что это на самом деле проблема. Вы используете Linux или Windows? К сожалению, под Windows adb искажает символы CRLF , что означает, что невозможно передать двоичное изображение через него, используя технику, которую я использую. Я могу написать обходной путь для этого, если это будет необходимо.
В ветке, посвященной разработчикам XDA, описывается, как сделать резервную копию nandroid непосредственно на вашем компьютере без использования sdcard . Конечно, это работает только на рутованных устройствах. Дополнительные требования включают в себя либо Posix OS, такую как Linux / MacOS (пользователи Windows могут эмулировать это с Cygwin), и ADB (то есть либо весь SDK, либо, по крайней мере, минимальную установку ). Более того, busybox
должен быть доступен на устройстве, и отладка USB активирована.
В статье шаг за шагом описываются команды, необходимые для создания резервной копии Nandroid. По сути, он использует dd через именованный канал для создания копии разделов вашего устройства на уровне блоков - что в основном представляет собой резервная копия nandroid .
Я заметил, что (если у вас уже настроен ADB, ваш телефон рутирован, и вы работаете в системе Linux или аналогичной), можно вывести содержимое раздела с помощью одной строки:
adb pull /dev/block/mmcblk0
Это то же самое, что описано в потоке XDA для получения побитового содержимого флэш-памяти, кроме как без использования netcat и pipe (что может понадобиться или не зависеть от обстоятельств, я полагаю). Очевидно, что ни один раздел на флэш-памяти не должен быть подключен во время копирования данных (т. Е. Делать это из восстановления, пока 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