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


30

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, diesen BMGR zu verwenden ?


Ich benutze ADB 1.0.29 auf Win7-64 und erhalten den Fehler adb: unable to open file ./backup.abbei der Ausführung adb backup -all. nicht adb devicesfinden Ihr Android?
k3b

Ja, ich kann die Geräte-ID sehen.

Ich hatte ein ähnliches Problem beim Senden von Multipe-Paketnamen in der Befehlszeile. Das Problem war (ist), dass die Anzahl der zu sichernden Pakete zu groß ist. Ich musste es in mehrere Befehlsaufrufe aufteilen
Romuald Brunet

Antworten:


9

Stellen Sie sicher, dass das Debuggen aktiviert und das Gerät verbunden ist. Denken Sie auch daran, die Schaltfläche "Meine Daten sichern" auf dem Gerät selbst zu aktivieren (das Gerät muss bestätigt werden). Wenn Sie auf Ihrem Gerät keinen solchen Bildschirm sehen, verwenden Sie möglicherweise ein Pre-ICS-Telefon (<4.0), das diese Funktion leider nicht bietet.

Auch bmgrist keine Lösung für this- Es ist ein Werkzeug für Anwendungen zu testen , die ihre eigenen Backups des Griff mit Backup - API durch manuelles Brennen des „Backup“ und Methoden auf dem Backup - Agenten in der Anwendung „wiederherstellen“, nicht in das Gerät Beschuss und Kopieren von Daten auf / von der Entwicklungsmaschine.


Ja - für mich war das Problem die alte Version von Android auf meinem Handy, vor 4.0. Vielen Dank!
Nealmcb

Beinhaltet dies tatsächlich Einstellungen / Daten?
Niemand

7

Hier ist mein Befehl zum Sichern

./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. liste alle dateien auf
  2. Links ignorieren
  3. zum
    • files: gibt einen adb pull Befehl aus
    • directorys: mache das Verzeichnis (falls wir etw leer ziehen) und gib einen adb pull Befehl aus
  4. Führe alles in bash aus

Es gibt einige Dateien, denen ich eine Berechtigung verweigert bekomme - aber da diese Sicherung gemacht wird, um das Gerät zu rooten, kann ich keine weiteren Berechtigungen erhalten :(


1
Dies scheint in der Tat alle Dateien zu sichern (abzüglich der Bits "Erlaubnis verweigert"), auch auf älteren Androiden (in diesem Fall Gingerbread 2.3.3). Ich benutze diese Variante (hinzugefügt -pparam auf mkdireinige Fehlermeldungen und entfernt zu vermeiden , ./vor ./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
Eine viel einfachere Möglichkeit, eine rekursive Sicherung aller Dateien ohne ausgefallenen regulären Ausdruck durchzuführen, ist "adb pull /".
JC Hulce

5

Wenn ich Sie richtig verstehe, könnte dieser Link genau das sein, wonach Sie suchen. Zusammenfassen:

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

2) Führen Sie adb pull /data/app ./den Befehl aus, um alle App-APKs abzurufen und in den aktuellen Ordner zu verschieben.
a) Oder Ausführen adb pull /system/sd/app ./, um Apps auf die SD-Karte zu laden.

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

Über den Link erfahren Sie, wie Sie auf Mac- oder Windows-Basis wiederherstellen können.

Alternativ sieht es so aus, als würde der von bmgrIhnen erwähnte Befehl auch mit ein paar einfachen Befehlen ( adb shell bmgr backup <package>zum Sichern und adb shell bmgr restore <package>Wiederherstellen) funktionieren . Was suchst du mehr?


1
Wie Alexander Lucas in seiner Antwort unten bemerkt, ist der bmgrBefehl ein Tool für Entwickler, um die Sicherung / Wiederherstellung von Apps zu testen. Es werden keine Daten vom Gerät kopiert, daher ist es unwahrscheinlich, dass dies nützlich ist.
PT

Funktioniert nicht auf ADB 1.0.30 mit Gingerbread-Gerät:pull: building file list... 0 files pulled. 0 files skipped.
Stéphane Gourichon

Sie adb pullkönnen nicht auf nicht gerooteten Geräten für private App-Daten arbeiten. Und bmgrist nur für die Kontrolle von Google Cloud-Backup
Murmel

2

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. Möglicherweise kann keine Verbindung hergestellt werden specialy to emulators.

Führen adb usbSie es aus, um andere Geräte neu zu starten. Trennen Sie dann das USB-Kabel, und schließen Sie es wieder an. Führen Sie es jetzt aus

adb devices

Es sollte nur ein Gerät angezeigt werden.

mach jetzt

adb backup -all

und du solltest gut gehen :)


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

2

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

Nachdem Sie das USB-Debugging auf Ihrem Gerät aktiviert und an Ihren PC angeschlossen haben, sollten Sie eine Aufforderung zur Installation der Treiber erhalten. Selbst wenn der Geräte-Manager erfolgreich geöffnet wurde und Sie Ihr Telefon gefunden haben, klicken Sie mit der rechten Maustaste darauf und aktualisieren Sie die Treiber. Zeigen Sie dann auf den Ordner mit den Google USB- SDK > Extras > Google USBTreibern im und lassen Sie die Treiber aktualisieren.

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


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.
AJ Henderson

1

Ich habe eine GS4, die ich sichern musste und leider auf diesen Fehler gestoßen ist. Nach ein wenig 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 durchblätterte. Ich habe festgestellt, dass dies -dein Parameter ist, der den Befehl an das einzige angeschlossene USB-Gerät weiterleitet. Also habe ich es nach dem Einstecken und Tuckern für mich zum Laufen gebracht. Der Befehl, den ich verwendete, war:

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

Hoffe, das funktioniert für jemanden mit dem gleichen Problem, das ich hatte.


0

Ich hatte das gleiche Problem und bin auch Pre-ICS. Was ich getan habe, um es zu /umgehen, wurde mit ls von und awk (mit grep, um Links zu überspringen) verwendet, um eine Batch-Datei zu erstellen, die jedes tatsächliche Verzeichnis in ein Verzeichnis auf meinem PC zieht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.