Sichern und Wiederherstellen von Android-Einstellungen und -Anwendungen über ADB

Ich möchte fragen, ob es möglich ist, alle Android-Einstellungen und -Anwendungen über ADB zu sichern und wiederherzustellen.

Ich habe es versucht:

adb backup -all
adb: unable to connect for backup

Es funktioniert nicht, während alle anderen Befehle funktionieren.

Ist es möglich, dieses bmgr zu verwenden ?

Ich verwende adb 1.0.29 auf win7-64 und erhalte den Fehler adb: unable to open file ./backup.abbeim Ausführen von adb backup -all. findet adb devicesIhr Android?
Ja, ich kann die Geräte-ID sehen.
Ich hatte ein ähnliches Problem beim Senden mehrerer Paketnamen über die Befehlszeile. Das Problem war (ist), dass die Anzahl der zu sichernden Pakete zu lang ist. Ich musste es in mehrere Befehlsaufrufe aufteilen

Antworten (7)

Stellen Sie sicher, dass Debugging aktiviert und das Gerät verbunden ist. Denken Sie auch daran, die Schaltfläche „Meine Daten sichern“ auf dem Gerät selbst auszuwählen (das Gerät erfordert eine Bestätigung). Wenn Sie einen solchen Bildschirm auf Ihrem Gerät nicht sehen, verwenden Sie höchstwahrscheinlich ein Telefon vor ICS (< 4.0), das diese Funktion leider nicht hat.

Dies ist auch bmgrkeine Lösung dafür. Es ist ein Tool zum Testen von Apps, die ihre eigenen Backups mithilfe der Backup-API verarbeiten , indem sie die Methoden „Backup“ und „Restore“ manuell auf dem Backup-Agenten in der Anwendung auslösen, nicht in das Gerät und Kopieren von Daten auf/von der Entwicklungsmaschine.

Yup - für mich war das Problem eine alte Version von Android auf meinem Handy, vor 4.0. Danke!
Umfasst dies tatsächlich Einstellungen/Daten?

Hier ist mein Befehl zum Sichern von Dingen

./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. alle Dateien auflisten
  2. Links ignorieren
  3. Pro
    • Dateien: Geben Sie einen adb Pull-Befehl aus
    • Verzeichnisse: Machen Sie das Verzeichnis (falls wir etwas leer ziehen) und geben Sie einen adb-Pull-Befehl aus
  4. alles in bash ausführen

Es gibt einige Dateien, bei denen mir eine Berechtigung verweigert wird - aber da dieses Backup erstellt wird, um das Gerät zu rooten, kann ich keine weiteren Berechtigungen erhalten :(

Dies scheint tatsächlich alle Dateien zu sichern (abzüglich der "Erlaubnis verweigert"-Bits), sogar auf älteren Androids (in diesem Fall Gingerbread 2.3.3). Ich verwende diese Variante ( -pparam hinzugefügt mkdir, um einige Fehlermeldungen zu vermeiden und ./vor entfernt ./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
Eine viel einfachere Möglichkeit, ein rekursives Backup aller Dateien zu erstellen, ohne einen ausgefallenen Regex zu benötigen, ist „adb pull /“.

Wenn ich dich richtig verstehe, könnte dieser Link das sein, wonach du suchst. Zusammenfassen:

1) Führen adb devicesSie es aus, um sicherzustellen, dass Ihr Gerät angeschlossen ist.

2) Ausführen adb pull /data/app ./, um alle App-APKs zu greifen und sie in den aktuellen Ordner zu legen.
a) Oder Ausführen adb pull /system/sd/app ./, um Apps auf die SD-Karte zu bekommen.

3) Die Einstellungen befinden sich an verschiedenen Stellen, also finden Sie heraus, wo und verwenden Sie dann denselben adb pullBefehl, um sie abzurufen.

Und dann beschreibt der Link, wie Sie basierend auf Mac oder Windows wiederherstellen können.

Alternativ sieht es so aus , als bmgrwürde der von Ihnen erwähnte Befehl auch mit ein paar einfachen Befehlen funktionieren ( adb shell bmgr backup <package>zum Sichern und adb shell bmgr restore <package>Wiederherstellen). Was suchen Sie noch?

Wie Alexander Lucas in seiner Antwort unten anmerkt, ist der bmgrBefehl ein Tool für Entwickler, um die Sicherung/Wiederherstellung von Apps zu testen. Es kopiert nicht wirklich Daten vom Gerät, daher ist es unwahrscheinlich, dass es nützlich ist.
Funktioniert nicht auf adb 1.0.30 mit Gingerbread-Gerät:pull: building file list... 0 files pulled. 0 files skipped.
adb pullSie funktionieren nicht auf nicht gerooteten Geräten für private App-Daten . Und bmgrdient nur zur Steuerung von Googles Cloud-Backup

Das Problem liegt wahrscheinlich daran, dass mehr als ein Gerät/Emulator angeschlossen ist.

Überprüfen Sie, adb devicesob mehr als ein Gerät angezeigt wird, dann kann es möglicherweise keine Verbindung herstellen specialy to emulators.

run adb usbit wird andere Geräte neu starten, dann USB-Kabel trennen/wieder verbinden, jetzt ausführen

adb devices

Es sollte nur ein Gerät angezeigt werden.

mach jetzt

adb backup -all

und du solltest gut zu gehen sein :)

Was müsste ich tun, wenn ich den Befehl lokal über einen Terminal-Emulator für Android verwende?

Stellen Sie sicher, dass Sie das SDK-Update ausführen und aktivieren Sie speziell das Kontrollkästchen für Google USB-Treiber und aktualisieren Sie das SDK.

Nachdem Sie das USB-Debugging auf Ihrem Gerät aktiviert und an Ihren PC angeschlossen haben, sollten Sie eine Aufforderung zur Installation von Treibern erhalten. Auch wenn es erfolgreich ist, öffnen Sie den Geräte-Manager und finden Sie Ihr Telefon, klicken Sie mit der rechten Maustaste und aktualisieren Sie die Treiber und zeigen Sie auf den Google USB-Treiberordner im SDK > Extras > Google USBund lassen Sie die Treiber aktualisieren.

Dann sollten Sie in der Lage sein, vollständige Backups von Ihrem Gerät zu ziehen.

Dies hat das Problem für mich behoben, als ich es hatte. Die Treiber waren nicht das Problem, aber die ADB-Version selbst war zu veraltet.

Ich habe eine GS4, die ich sichern musste, und bin leider auf diesen Fehler gestoßen. Nach ein bisschen Kopfkratzen (und Fluchen) habe ich eine Lösung gefunden, von der ich hoffe, dass sie für Sie funktioniert. Ich konnte dies finden, indem ich einfach die abdHilfedokumentation ausführte und durchblätterte. Ich habe festgestellt, dass -ddies ein Parameter ist, der "den Befehl an das einzige angeschlossene USB-Gerät weiterleitet". Also nach dem Einstecken und Tuckern habe ich es für mich zum Laufen gebracht. Der Befehl, den ich verwendet habe, war:

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

Ich hoffe, das funktioniert für jemanden, der das gleiche Problem hat wie ich.

Ich hatte das gleiche Problem und bin auch Prä-ICS. Was ich getan habe, um es zu umgehen, war die Verwendung von ls of /und awk (mit grep zum Überspringen von Links), um eine Batchdatei zu erstellen, die jedes aktuelle Verzeichnis in ein Verzeichnis auf meinem PC zieht.