Резервное копирование и восстановление настроек Android и приложения через ADB

30

Я хотел бы спросить, возможно ли выполнить резервное копирование и восстановление всех настроек Android и приложений через ADB.

Я пытался:

adb backup -all
adb: unable to connect for backup

Это не работает, в то время как все остальные команды работают.

Можно ли использовать этот Bmgr ?

glarkou
источник
Я использую 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 (если мы извлечем sth пусто) и выведите команду adb pull
  4. выполнить все в Bash

Есть некоторые файлы, в которых я получаю отказано в разрешении, но поскольку эта резервная копия сделана для того, чтобы получить root права на устройство, я не могу получить больше разрешений :(

desam1000
источник
1
Это действительно похоже на резервное копирование всех файлов (за исключением битов «в доступе отказано») даже на старых Android (в данном случае, 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
Стефан Гурихон
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 с устройством Gingerbread:pull: building file list... 0 files pulled. 0 files skipped.
Стефан Гурихон
Вы adb pullне будете работать на некорневых устройствах для личных данных приложения. И bmgrтолько для управления облачным резервным копированием
Google
2

Возможно, проблема связана с подключением более одного устройства / эмулятора.

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

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

adb devices

он должен показывать только одно устройство.

сейчас делаю

adb backup -all

и тебе должно быть хорошо идти :)

Zalaboza
источник
Что мне делать, если я использую команду локально через эмулятор терминала для Android?
user2284570
2

Обязательно запустите обновление SDK и, в частности, установите флажок для Google USB Drivers и обновите SDK.

После включения отладки по USB на вашем устройстве и подключения к компьютеру вы должны получить подсказку об установке драйверов. Даже если он успешно откроет диспетчер устройств и найдет ваш телефон, щелкните правой кнопкой мыши и обновите драйверы и укажите его в папке драйверов Google 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

Надеюсь, что это работает для кого-то с той же проблемой, что и у меня

WAZANATOR
источник
0

У меня была та же проблема, и я также до ICS. Чтобы обойти это, я использовал ls of /и awk (с grep для пропуска ссылок), чтобы создать командный файл, который перетягивает каждый фактический каталог в каталог на моем ПК.

eldarerathis
источник