Чи є спосіб зробити резервне копіювання Nandroid безпосередньо на ПК, а потім відновити його безпосередньо з ПК?


22

У моєму телефоні не вистачає місця для зберігання файлів резервного копіювання, тому мені цікаво, чи є спосіб зробити резервне копіювання Nandroid та відновити файли, збережені на ПК.


1
Я сумніваюся, що це можливо зробити. Спробуйте створити резервну копію на зовнішній SD-картці та перенести її на комп'ютер. Або просто перемістіть достатню кількість файлів на комп’ютер, щоб ви могли створити та відновити резервну копію на телефоні, а потім перемістити файли назад, коли закінчите.
VarnerBeast14

Відповіді:


14

Я написав кілька інструментів саме для цієї мети через подібні розчарування: 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  

Це незавершена робота - відгуки дуже вітаються!

Вимоги:

  • Python 3.3+ і новіші версії Linux / OSX / Windows.
    • progressbarпакет потрібен ( pip install progressbarповинен це зробити)
  • adb Інструменти командного рядка (Android Debug Bridge)
  • Корінний пристрій Android із встановленим відновленням TWRP .
    • Вимога щодо вкоріненого пристрою та користувальницького відновлення ніколи не знищується : якщо у вас немає кореневого доступу, у вас немає коштів для копіювання всього вмісту пам’яті вашого пристрою, просто.

EDIT: Схоже, більша частина трафіку до https://github.com/dlenski/tetherback надходить саме з цієї теми. Ранні проблеми з корупцією даних, описані в коментарях нижче, були вирішені; Тетербек тепер включає дуже жорсткі перевірки проти корупції.


По-перше, дякую за створення програми. Здається, він працює добре, за винятком випадків, коли я використовую nandroid.py більші файли, такі як system.img.gz та userdata.img.gz, не вдаються при розпакуванні gzip. "CRC не вдається", і він створює файл img приблизно на 1/5 розміру файлу img.gz. Однак bootloader.img.gz добре розпаковує. Чи все-таки є їх, що ви могли б відключити gzipping або знаєте інший спосіб виправити пошкоджений файл?
I_With_Stupid

1
@ I'm_With_Stupid, ви можете відключити модуль , gzipзмінивши L46 , але я сумніваюся, що це насправді проблема. У вас працює Linux або Windows? На жаль, під Windows adb маніпулює символами CRLF , це означає, що неможливо передати бінарне зображення через нього, використовуючи техніку, яку я використовую. Я можу написати для цього рішення.
Дан

Крім того, якщо ви можете надати більше деталей, додайте його як новий випуск у сховищі Github, тому що це полегшує відстеження!
Дан

1
Я додав свої проблеми як нові питання, тому, мабуть, ми повинні продовжувати нашу розмову там .
I_With_Stupid

8

Нитка розробників XDA описує, як зробити резервну копію nandroid безпосередньо на комп’ютері без використання sdcard . Звичайно, це працює лише на вкорінених пристроях. Подальші вимоги включають або Posix OS, як Linux / MacOS (користувачі Windows можуть емулювати це за допомогою Cygwin), і ADB (тобто або весь SDK, або принаймні мінімальна установка ). Більше того, busyboxна пристрої має бути доступно, і налагодження USB активовано.

У статті описані покрокові команди, необхідні для створення резервної копії Nandroid. В основному, це використання DD через іменовану трубу для створення блокової копії розділів вашого пристрою - що в основному .


2
Дякую за вказівник, @Hudayfah! Але хоча повідомлення, які мають лише посилання, теоретично можуть відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки. В іншому випадку відповідь стає марною у випадку, якщо посилання вмирає. Відповідно, я оновив вашу публікацію, щоб показати, як це може виглядати, щоб допомогти вам щодо майбутніх публікацій (які, сподіваємось, зробимо :) Теплий прийом до нашої спільноти!
Іззі

Крім того, як би ви вирішили відновити цю резервну копію, припускаючи, що у вас є доступ лише до швидкої завантаження або, можливо, до 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був за це добре.


2
  1. Показати параметри розробника ( Settings > Developer> tap build 7 times)
  2. Увімкнути налагодження через USB ( Settings > Developer > USB Debugging)
  3. використовуйте відновлення, щоб уникнути обмежень кореневих файлів ОС

    ./adb reboot recovery

  4. зробити тяг

    ./adb pull /dev/block/mmcblk0 mmcblk0.img


Як би я відновив таку резервну копію?
Сума

@Suma з adb push (або встановити img та скопіювати цікаві файли)
user1133275

Android дозволить вам легко отримувати доступ до всієї внутрішньої пам’яті?
Мелаб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.