Sauvegarder et restaurer les paramètres et l'application Android via ADB


30

Je voudrais demander s'il est possible de sauvegarder et de restaurer tous les paramètres et applications Android via ADB.

J'ai essayé:

adb backup -all
adb: unable to connect for backup

Cela ne fonctionne pas, alors que toutes les autres commandes fonctionnent.

Est-il possible d'utiliser ce bmgr ?


j'utilise adb 1.0.29 sur win7-64 et j'obtiens l'erreur adb: unable to open file ./backup.ablors de l'exécution adb backup -all. ne adb devicestrouver votre Android?
k3b

oui je peux voir l'identifiant de l'appareil.

J'ai rencontré un problème similaire lors de la soumission de noms de packages multipe sur la ligne de commande. Le problème était (est) que le nombre de packages à sauvegarder est trop long. Je devais le diviser en plusieurs appels de commande
Romuald Brunet

Réponses:


9

Assurez-vous que le débogage est activé et que l'appareil est connecté. N'oubliez pas non plus de sélectionner le bouton «sauvegarder mes données» sur l'appareil lui-même (l'appareil nécessite une confirmation). Si vous ne voyez pas un tel écran sur votre appareil, vous utilisez très probablement un téléphone pré-ICS (<4.0), qui n'aura malheureusement pas la fonctionnalité.

En outre, ce bmgrn'est pas une solution pour cela - c'est un outil pour tester les applications qui gèrent leurs propres sauvegardes à l'aide de l' API de sauvegarde en exécutant manuellement les méthodes de «sauvegarde» et de «restauration» sur l'agent de sauvegarde dans l'application, sans bombarder l'appareil et copier des données vers / depuis la machine de développement.


Ouaip - pour moi, le problème était l'ancienne version d'Android sur mon téléphone, avant la 4.0. Merci!
nealmcb

Est-ce que cela inclut réellement les paramètres / données?
Personne le

7

Voici ma commande pour sauvegarder les choses

./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. répertorier tous les fichiers
  2. ignorer les liens
  3. pour
    • fichiers: sortie d'une commande adb pull
    • répertoires: faites le dir (au cas où nous tirons sth vide) et sortez une commande adb pull
  4. tout exécuter en bash

Il y a certains fichiers pour lesquels une autorisation est refusée - mais comme cette sauvegarde est effectuée afin de rooter l'appareil, je ne peux pas obtenir plus d'autorisations :(


1
Cela semble en effet sauvegarder tous les fichiers (moins les bits "permission refusée") même sur les anciens androïdes (dans ce cas, Gingerbread 2.3.3). J'utilise cette variante ( -pparamètre ajouté mkdirpour éviter certains messages d'erreur et supprimé ./devant ./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
Une manière beaucoup plus simple de faire une sauvegarde récursive de tous les fichiers, sans avoir besoin de regex fantaisie est "adb pull /."
JC Hulce

5

Si je vous comprends bien, ce lien pourrait être ce que vous recherchez. Résumer:

1) Exécutez adb devicespour vous assurer que votre appareil est connecté.

2) Exécutez adb pull /data/app ./pour récupérer tous les fichiers APK de l'application et placez-les dans le dossier actuel.
a) Ou exécutez adb pull /system/sd/app ./pour obtenir des applications sur la carte SD.

3) Les paramètres sont situés à divers endroits, alors découvrez où et utilisez la même adb pullcommande pour les saisir.

Et puis le lien détaille comment restaurer sur Mac ou Windows.

Alternativement, il semble que la bmgrcommande que vous avez mentionnée fonctionnerait également avec quelques commandes simples ( adb shell bmgr backup <package>pour sauvegarder et adb shell bmgr restore <package>restaurer). Que cherchez-vous de plus?


1
Comme Alexander Lucas le note dans sa réponse ci-dessous, la bmgrcommande est un outil permettant aux développeurs de tester la sauvegarde / restauration d'applications. Il ne copie en fait aucune donnée de l'appareil, il est donc peu probable qu'il soit utile.
PT

Ne fonctionne pas sur adb 1.0.30 avec le dispositif Gingerbread:pull: building file list... 0 files pulled. 0 files skipped.
Stéphane Gourichon

Votre adb pullne fonctionnera pas sur les appareils non enracinés pour les données d'applications privées. Et ce bmgrn'est que pour contrôler la sauvegarde cloud de
Google

2

le problème est probablement dû à plusieurs périphériques / émulateurs connectés.

vérifiez adb devicess'il affiche plus d'un appareil, il pourrait ne pas être en mesure de se connecter specialy to emulators.

exécutez adb usb-le redémarrera d'autres appareils, puis déconnectez / reconnectez le câble USB, maintenant exécutez

adb devices

il ne devrait afficher qu'un seul appareil.

maintenant

adb backup -all

et vous devriez être prêt à partir :)


que dois-je faire si j'utilise la commande localement via un émulateur de terminal pour android?
user2284570

2

Assurez-vous d'exécuter la mise à jour du SDK et cochez spécifiquement la case des pilotes USB Google et mettez à jour le SDK.

Après avoir activé le débogage USB sur votre appareil et vous être connecté à votre PC, vous devriez obtenir une invite sur l'installation des pilotes. Même si son gestionnaire de périphériques ouvert réussit et trouve votre téléphone, faites un clic droit et mettez à jour les pilotes et pointez-le vers le dossier des pilotes Google USB dans le SDK > Extras > Google USBet laissez-le mettre à jour les pilotes.

Ensuite, vous devriez pouvoir extraire des sauvegardes complètes de votre appareil.


Cela a résolu le problème pour moi lorsque je l'avais. Les pilotes n'étaient pas le problème, mais la version ADB elle-même était trop dépassée.
AJ Henderson

1

J'ai une GS4 que j'avais besoin de sauvegarder et j'ai malheureusement rencontré cette erreur. après avoir gratté la tête (et juré), j'ai trouvé une solution qui, je l'espère, fonctionnera pour vous. J'ai pu le trouver en exécutant abdet en faisant défiler la documentation d'aide. J'ai trouvé que -dc'est un paramètre qui "dirige la commande vers le seul périphérique USB connecté". Donc, après avoir branché et débranché, je l'ai fait fonctionner pour moi. La commande que j'ai utilisée était:

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

J'espère que cela fonctionne pour quelqu'un ayant le même problème que moi.


0

J'ai eu le même problème et je suis également pré-ICS. Ce que j'ai fait pour contourner ce problème a été utilisé avec ls /et awk (avec grep pour ignorer les liens) pour créer un fichier de commandes qui tire chaque répertoire réel dans un répertoire sur mon PC.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.