Резервне копіювання та відновлення налаштувань та додатків Android через ADB


30

Я хотів би запитати, чи можна створити резервну копію та відновити всі налаштування та програми Android через ADB.

Я намагався:

adb backup -all
adb: unable to connect for backup

Він не працює, тоді як усі інші команди працюють.

Чи можливо використовувати цей bmgr ?


Я використовую adb 1.0.29 на win7-64 і отримую помилку adb: unable to open file ./backup.abпри виконанні adb backup -all. це adb devicesзнайти свій андроїд?
k3b

так, я можу побачити ідентифікатор пристрою.

У мене була аналогічна проблема, коли я надсилав імена пакетів у командному рядку. Проблема полягала в тому, що кількість пакетів для резервного копіювання занадто довга. Мені потрібно було розділити його на декілька командних викликів
Ромуальд Бруне

Відповіді:


9

Переконайтесь, що налагодження включено та пристрій підключено. Також пам’ятайте, що насправді вибираєте кнопку «резервна копія моїх даних» на самому пристрої (пристрій потребує підтвердження). Якщо ви не бачите такого екрану на своєму пристрої, ви, ймовірно, працюєте з телефоном, що передує ICS (<4.0), який, на жаль, не матиме функції.

Крім того, bmgrце не є рішенням для цього. Це інструмент для тестування програм, які обробляють власні резервні копії за допомогою API резервного копіювання , вручну запускаючи методи "резервного копіювання" та "відновлення" на агенті резервного копіювання в додатку, не обстрілюючи пристрій і копіювання даних в / з машини розвитку.


Так - для мене проблемою була стара версія Android на моєму телефоні, до 4.0. Спасибі!
nealmcb

Чи насправді це включає налаштування / дані?
Ніхто

7

Ось моя команда для резервного копіювання речей

./adb shell ls -l -a | grep '^[^l]' | sed -e 's/^d.* \([^ ]*\)\r$/mkdir sav\/\1; .\/adb pull \/\1 sav\/\1/' -e 's/-.* \([^ ]*\)\r$/.\/adb pull \/\1 sav\/\1/' | /bin/bash
  1. список усіх файлів
  2. ігноруйте посилання
  3. для
    • Файли: виведіть команду adb pull
    • каталоги: зробіть dir (у випадку, якщо ми витягнемо що-небудь порожнє) і виведемо команду adb pull
  4. виконати все в баш

Є деякі файли, в яких мені відмовлено в дозволі, але оскільки ця резервна копія робиться для того, щоб викорінити пристрій, я не можу отримати більше дозволів :(


1
Дійсно, це резервне копіювання всіх файлів (за винятком бітів "відмовлено у дозволі") навіть на старих андроїдах (у цьому випадку Gingerbread 2.3.3). Я використовую цей варіант (додав -pпарам, щоб mkdirуникнути повідомлень про помилки і видалити ./перед собою ./adb):time adb shell ls -l -a | grep '^[^l]' | sed -e 's/^d.* \([^ ]*\)\r$/mkdir -p sav\/\1; adb pull \/\1 sav\/\1/' -e 's/-.* \([^ ]*\)\r$/adb pull \/\1 sav\/\1/' | /bin/bash
Stéphane Gourichon

3
Набагато простішим способом зробити рекурсивну резервну копію всіх файлів, не потребуючи фантазії, є "adb pull /".
JC Hulce

5

Якщо я вас правильно зрозумів, це посилання може бути тим, що ви шукаєте. Узагальнити:

1) Запустіть, adb devicesщоб переконатися, що ваш пристрій підключено.

2) Запустіть, adb pull /data/app ./щоб схопити всі APK програми та помістити їх у поточну папку.
а) Або запустіть, adb pull /system/sd/app ./щоб отримати програми на SD-картці.

3) Налаштування розташовані в різних місцях, тому з’ясуйте, де і потім скористайтеся однією і тією ж adb pullкомандою, щоб захопити їх.

А потім посилання детально розповідає, як відновити на основі Mac чи Windows.

Крім того, схоже, що bmgrзгадана вами команда також працюватиме з кількома простими командами ( adb shell bmgr backup <package>для резервного копіювання та adb shell bmgr restore <package>відновлення). Що ще ви шукаєте?


1
Як зазначає Олександр Лукас у своїй відповіді нижче, bmgrкоманда є інструментом для розробників для тестування резервного копіювання / відновлення додатків. Він фактично не копіює будь-які дані з пристрою, тому його навряд чи будуть корисні.
PT

Не працює на adb 1.0.30 з пристроєм «Пряники»:pull: building file list... 0 files pulled. 0 files skipped.
Stéphane Gourichon

Ваш adb pullне працюватиме на некореневих пристроях для конфіденційних даних додатків. І bmgrлише для контролю резервного копіювання хмари Google
Murmel

2

Проблема, ймовірно, пов’язана з кількома підключеними пристроями / емуляторами.

перевірте, adb devicesчи показує він більше ніж один пристрій, можливо, він не зможе підключитися specialy to emulators.

запустіть adb usbйого, перезавантажте інші пристрої, потім відключіть / відновлюйте USB-кабель, тепер запустіть

adb devices

він повинен показувати лише один пристрій.

тепер зроби

adb backup -all

і вам слід добре піти :)


що я повинен зробити, якщо я використовую команду локально через емулятор терміналу для android?
користувач2284570

2

Переконайтеся, що запустіть оновлення SDK та спеціально встановіть прапорець USB-драйвери Google та оновіть SDK.

Увімкнувши налагодження USB на пристрої та підключившись до ПК, вам слід отримати запит про встановлення драйверів. Навіть якщо його успішний менеджер пристроїв відкриє і знайде ваш телефон, клацніть правою кнопкою миші та оновіть драйвери та вкажіть його на папку драйверів USB у програмі SDK > Extras > Google USBта дозвольте їй оновити драйвери.

Тоді ви маєте змогу витягнути повністю резервні копії зі свого пристрою.


Це вирішило проблему для мене, коли я мав це. Драйвери не були проблемою, але сама версія ADB була занадто застарілою.
AJ Henderson

1

У мене є GS4, який мені потрібен для резервного копіювання, і, на жаль, наткнувся на цю помилку. після трохи чесання голови (і лаяння) я знайшов виправлення, яке, сподіваюся, допоможе вам. Мені вдалося це знайти, просто запустивши abdта прокручуючи довідкову документацію. Я виявив, що -dце параметр, який "спрямовує команду на єдиний підключений USB-пристрій". Тож після підключення та зачеплення я змусив мене працювати. Я використовував команду:

adb -d backup -apk -shared -all -f C:\Users\NAME\backup.ab

Сподіваюся, це працює для тих, хто має те саме питання, що й у мене.


0

У мене був той самий випуск, і я також є попередньою ICS. Що я зробив, щоб обробити це, було використано ls /та awk (з грепом для пропуску посилань), щоб створити пакетний файл, який перетягує кожен фактичний каталог на каталог на моєму ПК.

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