Twórz kopie zapasowe i przywracaj ustawienia i aplikacje Androida za pomocą ADB


30

Chciałbym zapytać, czy można wykonać kopię zapasową i przywrócić wszystkie ustawienia Androida i aplikacje za pomocą ADB.

Próbowałem:

adb backup -all
adb: unable to connect for backup

Nie działa, podczas gdy wszystkie inne polecenia działają.

Czy można użyć tego bmgr ?


Używam adb 1.0.29 na Win7-64 i pojawia się błąd adb: unable to open file ./backup.abpodczas wykonywania adb backup -all. ma adb devicesznaleźć androida?
k3b

tak, widzę identyfikator urządzenia.

Miałem podobny problem podczas przesyłania nazw pakietów multipe w wierszu poleceń. Problem polegał (a) na tym, że liczba pakietów do utworzenia kopii zapasowej jest zbyt długa. Musiałem podzielić go na wiele poleceń
Romuald Brunet,

Odpowiedzi:


9

Upewnij się, że debugowanie jest włączone i urządzenie jest podłączone. Pamiętaj również, aby faktycznie wybrać przycisk „zrób kopię zapasową moich danych” na samym urządzeniu (urządzenie wymaga potwierdzenia). Jeśli nie widzisz takiego ekranu na swoim urządzeniu, najprawdopodobniej korzystasz z telefonu sprzed wersji ICS (<4.0), który niestety nie będzie miał tej funkcji.

Ponadto, bmgrnie jest rozwiązaniem tego problemu - jest to narzędzie do testowania aplikacji, które obsługują własne kopie zapasowe za pomocą interfejsu API tworzenia kopii zapasowych , ręcznie uruchamiając metody „tworzenia kopii zapasowych” i „przywracania” na agencie tworzenia kopii zapasowych w aplikacji, nie musząc strzelać do urządzenia i kopiowanie danych do / z maszyny programistycznej.


Tak - dla mnie problemem była stara wersja Androida na mój telefon, wcześniejsza niż 4.0. Dzięki!
nealmcb,

Czy to faktycznie obejmuje ustawienia / dane?
Nikt

7

Oto moje polecenie tworzenia kopii zapasowych

./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. wyświetl wszystkie pliki
  2. ignoruj ​​linki
  3. dla
    • files: wyprowadza polecenie ściągania adb
    • katalogi: zrób katalog (na wypadek, gdybyśmy ściągnęli coś pustego) i wyślij polecenie ściągania adb
  4. wykonaj wszystko w bash

Istnieją pliki, w których odmówiono mi pozwolenia - ale ponieważ ta kopia zapasowa jest wykonywana w celu zrootowania urządzenia, nie mogę uzyskać więcej uprawnień :(


1
Wygląda na to, że tworzy kopię zapasową wszystkich plików (bez bitów „odmowy uprawnień”) nawet na starszych Androidach (w tym przypadku Gingerbread 2.3.3). Używam tego wariantu (dodano -pparametr, aby mkdiruniknąć niektórych komunikatów o błędach i usunięto ./przed ./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
Znacznie prostszym sposobem na rekursywne tworzenie kopii zapasowych wszystkich plików bez potrzeby stosowania wymyślnego wyrażenia regularnego jest „adb pull /”.
JC Hulce

5

Jeśli dobrze cię rozumiem, ten link może być tym, czego szukasz. Podsumowując:

1) Uruchom, adb devicesaby upewnić się, że urządzenie jest podłączone.

2) Uruchom, adb pull /data/app ./aby pobrać wszystkie aplikacje APK i umieścić je w bieżącym folderze.
a) Lub Uruchom, adb pull /system/sd/app ./aby pobrać aplikacje na kartę SD.

3) Ustawienia znajdują się w różnych miejscach, więc dowiedz się, gdzie, a następnie użyj tego samego adb pullpolecenia, aby je pobrać.

A następnie link zawiera szczegółowe informacje na temat przywracania w systemie Mac lub Windows.

Alternatywnie wygląda na to, bmgrże wspomniane polecenie będzie również działać z kilkoma prostymi poleceniami ( adb shell bmgr backup <package>do tworzenia kopii zapasowych i adb shell bmgr restore <package>przywracania). Czego więcej szukasz?


1
Jak zauważa Alexander Lucas w odpowiedzi poniżej, bmgrpolecenie to narzędzie dla programistów do testowania tworzenia kopii zapasowych / przywracania aplikacji. W rzeczywistości nie kopiuje żadnych danych z urządzenia, więc jest mało prawdopodobne, aby był użyteczny.
PT

Nie działa na adb 1.0.30 z urządzeniem Gingerbread:pull: building file list... 0 files pulled. 0 files skipped.
Stéphane Gourichon

Twoje urządzenie adb pullnie będzie działać na nierootowanych urządzeniach do prywatnych danych aplikacji. I bmgrsłuży wyłącznie do kontrolowania tworzenia kopii zapasowych w chmurze w Google
Murmel

2

problem jest prawdopodobnie spowodowany podłączeniem więcej niż jednego urządzenia / emulatora.

sprawdź, adb devicesczy pokazuje więcej niż jedno urządzenie, a następnie może nie być w stanie się połączyć specialy to emulators.

prowadzony adb usbbędzie ponownie uruchomić inne urządzenia, a następnie odłącz / reconncet kabel USB, uruchom teraz

adb devices

powinien pokazywać tylko jedno urządzenie.

teraz zrób

adb backup -all

i powinieneś być dobry :)


co musiałbym zrobić, jeśli użyję polecenia lokalnie za pomocą emulatora terminala dla Androida?
user2284570

2

Uruchom aktualizację zestawu SDK i zaznacz pole wyboru Sterowniki USB USB i zaktualizuj zestaw SDK.

Po włączeniu debugowania USB w urządzeniu i podłączeniu do komputera powinien zostać wyświetlony monit o zainstalowanie sterowników. Nawet jeśli udało się otworzyć menedżera urządzeń i znaleźć telefon, kliknij prawym przyciskiem myszy i zaktualizuj sterowniki, a następnie wskaż folder Google USB w sterowniku SDK > Extras > Google USBi pozwól mu zaktualizować sterowniki.

Powinieneś być w stanie pobrać pełne kopie zapasowe z urządzenia.


To rozwiązało problem, gdy go miałem. Sterowniki nie stanowiły problemu, ale sama wersja ADB była zbyt przestarzała.
AJ Henderson

1

Mam GS4, którego potrzebowałem do wykonania kopii zapasowej i niestety napotkałem ten błąd. po odrobinie drapania się po głowie (i przeklinania) znalazłem poprawkę, która, mam nadzieję, zadziała dla ciebie. Udało mi się to znaleźć, uruchamiając abdi przewijając dokumentację pomocy. Odkryłem, że -djest to parametr, który „kieruje polecenie do jedynego podłączonego urządzenia USB”. Więc po podłączeniu i wtargnięciu mam go dla siebie. Polecenie, którego użyłem to:

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

Mam nadzieję, że to zadziała dla kogoś, kto miał ten sam problem, który miałem.


0

Miałem ten sam problem i jestem również przed ICS. To, co zrobiłem, aby to obejść, zostało użyte za pomocą ls /i awk (z grep, aby pominąć linki), aby utworzyć plik wsadowy, który ciągnie każdy rzeczywisty katalog do katalogu na moim komputerze.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.