У моєму телефоні не вистачає місця для зберігання файлів резервного копіювання, тому мені цікаво, чи є спосіб зробити резервне копіювання 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)EDIT: Схоже, більша частина трафіку до https://github.com/dlenski/tetherback надходить саме з цієї теми. Ранні проблеми з корупцією даних, описані в коментарях нижче, були вирішені; Тетербек тепер включає дуже жорсткі перевірки проти корупції.
gzip
змінивши L46 , але я сумніваюся, що це насправді проблема. У вас працює Linux або Windows? На жаль, під Windows adb маніпулює символами CRLF , це означає, що неможливо передати бінарне зображення через нього, використовуючи техніку, яку я використовую. Я можу написати для цього рішення.
Нитка розробників XDA описує, як зробити резервну копію nandroid безпосередньо на комп’ютері без використання sdcard . Звичайно, це працює лише на вкорінених пристроях. Подальші вимоги включають або Posix OS, як Linux / MacOS (користувачі Windows можуть емулювати це за допомогою Cygwin), і ADB (тобто або весь SDK, або принаймні мінімальна установка ). Більше того, busybox
на пристрої має бути доступно, і налагодження USB активовано.
У статті описані покрокові команди, необхідні для створення резервної копії Nandroid. В основному, це використання DD через іменовану трубу для створення блокової копії розділів вашого пристрою - що в основному резервне копіювання нандроїдів .
Я помітив, що (якщо у вас вже налаштовано 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