Есть ли способ сделать резервную копию Nandroid непосредственно на компьютер, а затем восстановить его непосредственно с компьютера?
22
В моем телефоне недостаточно места для хранения файлов резервных копий, поэтому мне интересно, есть ли способ сделать резервное копирование и восстановление Nandroid с помощью файлов, хранящихся на компьютере.
Я сомневаюсь, что есть способ сделать это. Попробуйте выполнить резервное копирование на внешнюю SD-карту, а затем перенести на компьютер. Или просто переместите достаточно файлов на свой компьютер, чтобы вы могли создать и восстановить резервную копию на своем телефоне, а затем переместить файлы обратно, когда вы закончите.
Эти инструменты написаны на Python и используются adbдля создания резервных копий в стиле nandroid (необработанные образы разделов из dd if=/dev/block/mmcblk0pXX) или резервных копий в стиле TWRP (смесь необработанных образов разделов и тарболлов для ext4разделов).
Они пытаются проверить правильность расположения разделов и показать ход резервного копирования:
Требования к рутированному устройству и пользовательскому восстановлению никогда не исчезнут : если у вас нет доступа с правами root, у вас нет средств для копирования всего содержимого памяти вашего устройства, просто так.
РЕДАКТИРОВАТЬ: Похоже, большая часть трафика на https://github.com/dlenski/tetherback приходит из этой темы. Первые проблемы с повреждением данных, описанные в комментариях ниже, все были решены; tetherback теперь включает очень сильные проверки против коррупции.
Прежде всего, спасибо за создание программы. Кажется, что он работает хорошо, за исключением случаев, когда я использую nandroid.py, большие файлы, такие как system.img.gz и userdata.img.gz, перестают работать при распаковке gzip. «Crc терпит неудачу», и он создает файл img размером примерно в 1/5 размера файла img.gz. Тем не менее, bootloader.img.gz распаковывает нормально. В любом случае, вы можете отключить gzipping или знаете другой способ исправить поврежденный файл?
I'm_With_Stupid
1
@ I'm_With_Stupid, вы можете отключить gzip, изменив L46 , но я сомневаюсь, что это на самом деле проблема. Вы используете Linux или Windows? К сожалению, под Windows adb искажает символы CRLF , что означает, что невозможно передать двоичное изображение через него, используя технику, которую я использую. Я могу написать обходной путь для этого, если это будет необходимо.
Дан
Кроме того, если вы можете предоставить более подробную информацию, пожалуйста, добавьте ее как новый выпуск в репозиторий Github, потому что это облегчает отслеживать!
Дан
1
Я добавил свои проблемы в качестве новых вопросов, поэтому мы, вероятно, должны продолжить наш разговор там .
I'm_With_Stupid
8
В ветке, посвященной разработчикам XDA, описывается, как сделать резервную копию nandroid непосредственно на вашем компьютере без использования sdcard . Конечно, это работает только на рутованных устройствах. Дополнительные требования включают в себя либо Posix OS, такую как Linux / MacOS (пользователи Windows могут эмулировать это с Cygwin), и ADB (то есть либо весь SDK, либо, по крайней мере, минимальную установку ). Более того, busyboxдолжен быть доступен на устройстве, и отладка USB активирована.
В статье шаг за шагом описываются команды, необходимые для создания резервной копии Nandroid. По сути, он использует dd через именованный канал для создания копии разделов вашего устройства на уровне блоков - что в основном представляет собой резервная копия nandroid .
Спасибо за указатель, @Hudayfah! Но хотя посты, содержащие только ссылки, теоретически могут ответить на этот вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки. В противном случае ответ становится бесполезным, если ссылка умирает. Я соответствующим образом обновил ваш пост, чтобы показать, как это может выглядеть, чтобы помочь вам в отношении будущих постов (которые, как мы надеемся, сделаем :) Также приветствуем вас в нашем сообществе!
Иззи
Кроме того, как вы будете восстанавливать эту резервную копию, если у вас есть доступ только к fastboot или, возможно, к adb в процессе восстановления?
jiggunjer
почему это должно быть укоренено?
user4951
2
Я заметил, что (если у вас уже настроен 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было хорошо для этого.
Ответы:
Я написал несколько инструментов именно для этой цели из-за подобных разочарований: https://github.com/dlenski/tetherback
Эти инструменты написаны на Python и используются
adb
для создания резервных копий в стиле nandroid (необработанные образы разделов изdd if=/dev/block/mmcblk0pXX
) или резервных копий в стиле TWRP (смесь необработанных образов разделов и тарболлов дляext4
разделов).Они пытаются проверить правильность расположения разделов и показать ход резервного копирования:
Это работа в процессе - обратная связь очень приветствуется!
Требования:
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 или аналогичной), можно вывести содержимое раздела с помощью одной строки:
Это то же самое, что описано в потоке XDA для получения побитового содержимого флэш-памяти, кроме как без использования netcat и pipe (что может понадобиться или не зависеть от обстоятельств, я полагаю). Очевидно, что ни один раздел на флэш-памяти не должен быть подключен во время копирования данных (т. Е. Делать это из восстановления, пока
adb mount
не указаны подключенные разделы), иначе вы рискуете создать непоследовательную резервную копию в местах, где Android решила записать данные на время резервного копирования.Обратите внимание, что для восстановления просто:
не будет работать, так как
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
источник