web-dev-qa-db-fra.com

La sauvegarde adb ne fonctionne pas

J'ai besoin de votre aide, parce que je ne sais pas ce que j'ai fait de mal avec la sauvegarde des annonces.

Je souhaite sauvegarder mon Samsung Galaxy S3 LTE (GT-I9305) sans racine. Je l'ai googlé et j'ai trouvé Full Android Sauvegarde avec SDK Manager. J'ai installé tous les J'ai besoin pour cela comme Java Kit de développement 8 version 66 (JDK 8u66 x64) et Android Studio qui contient le gestionnaire de SDK. Ensuite, je devrais télécharger Google Pilote USB.J'ai téléchargé mais rien ne s'est passé.J'ai pensé que cela devrait fonctionner de temps en temps, je suis allé dans C:\Utilisateurs\MYNAME\AppData\Local\Android\sdk\platform-tools et cliqué à gauche sur adb tout en maintenant Shift. cliqué sur "Ouvrir la fenêtre de commande ici". Après cela, je tapai "Adb devices" et il dit:

Liste des périphériques connectés

3204cfaaf8611199 périphérique

Puis j'ai tapé:

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

Ça disait

Maintenant, déverrouillez votre appareil et confirmez l'opération de sauvegarde.

C'est ce que j'ai fait et mon smartphone a ouvert "Sauvegarde complète", ce qui m'a permis de définir un mot de passe pour la sauvegarde. Je n’ai pas besoin de mot de passe et j’ai juste cliqué sur "Sauvegarder mes données". Ensuite, il est retourné à mon écran d’accueil et a déclaré: "Démarrer la sauvegarde ..." sous forme de message, puis aussitôt après, "Sauvegarde terminée" et créé un message. fichier de sauvegarde avec 40 octets. Je ne sais pas ce que je devrais faire maintenant.

29
DB.01

Plutôt que d'essayer de trouver une ancienne version de adb, il est plus facile d'ajouter des guillemets aux arguments de adb backup:

adb backup "-apk -shared -all -f C:\Users\NAME\backup.ab"
40
NG.

La ligne, qui appelle correctement adb, doit ressembler à ceci:

adb backup "-apk -obb -shared -all -system" -f phone-20180522-120000.adb

Cette ligne concerne Linux, mais devrait également fonctionner pour Windows et OS-X. Pour Linux (et probablement OS-X), vous pouvez utiliser un script similaire à celui-ci, qui attribue automatiquement un horodatage au fichier:

adb backup "-apk -obb -shared -all -system" -f "${PHONE:-phone}-`date +%Y%m%d-%H%M%S`.adb`"

Important Après avoir effectué une sauvegarde, vérifiez vos données! À mes côtés, il arrive parfois que le fichier soit corrompu (et je doute que ce soit mon ordinateur, car je n'observe que de telles erreurs avec adb.).

Voici une instruction check que j'utilise:

set -o pipefail
for a in *.adb;
do
  echo "$a";
  dd if="$a" bs=24 skip=1 | zlib-flate -uncompress | tar tf - >/dev/null;
  echo "ret=$?";
done

Il devrait montrer ret=0, mais ce n'est pas le cas.

  • Si tu vois inflate: data: invalid code lengths set votre archive est corrompue et - très probablement - inutilisable pour la restauration!
  • Si tu vois tar: Unexpected EOF in archive votre sauvegarde est probablement utilisable (toutes les sauvegardes se terminent ainsi, je ne sais pas pourquoi).
  • Même si vous voyez juste ret=0 il peut y avoir des erreurs non découvertes qui empêchent toujours une restauration.
  • Il manque définitivement un adb verify commande, pour vérifier l'exactitude d'une sauvegarde!

FYI

Je publie cette mise à jour, car toutes les autres réponses ont été utiles, mais pas dans le détail. (Lorsqu'elle était utilisée avec des guillemets complets, une sauvegarde était effectuée, mais appelée backup.ab)

Voici mon environnement:

  • OS: Ubuntu 16.04
  • Téléphone: Android 7.0
  • BAD: 1.0.32

La procédure complète était (au cas où quelqu'un tomberait dessus sans savoir ce qui était nécessaire):

  • Zeroth: Installez adb (sur Ubuntu: Sudo apt-get install Android-tools-adb)
  • Premièrement: Activer le mode de débogage USB sur le téléphone .
  • Deuxièmement: connectez le téléphone au port USB de l'ordinateur avec un câble de données USB (un câble de charge uniquement ne suffit pas)
  • Notez que Ubuntu Phone Manager peut s’afficher et vous demander le code PIN du téléphone. Vous n'avez pas besoin de ça, fermez ça si ça arrive.
  • Troisième: run adb devices - vous devriez voir quelque chose comme XXXXXXXXXXXX unauthorized
  • Après un certain temps sur votre téléphone, un message demandant l’autorisation de débogage USB apparaît.
    • Permettez cette fois. Pour des raisons de sécurité, vous ne devez pas automatiquement faire confiance à l'ordinateur, l'empreinte digitale pouvant être facilement falsifiée.
    • Notez que si quelque chose obstrue un seul pixel de cette fenêtre de confirmation (comme un bouton de fonction d'accessibilité), vous ne pouvez pas appuyer sur OK. Commencez par déplacer la fenêtre d'obstruction.
  • Forth: Maintenant, lancez à nouveau adb devices - vous devriez voir quelque chose comme XXXXXXXXXXXX device
    • Si plusieurs lignes apparaissent, vous avez connecté plusieurs téléphones à l’ordinateur. Le moyen le plus simple est de débrancher tous ceux que vous ne voulez pas sauvegarder. (La méthode complexe consiste à définir la variable d'environnement Android_SERIAL=XXXXXXXXXXXX.)

Maintenant, lancez adb backup Comme montré ci-dessus. Modifiez le fichier selon vos besoins.

  • Cela ouvre une fenêtre qui demande une autorisation de sauvegarde.
  • Ne fermez pas la fenêtre de sauvegarde pendant la sauvegarde. Quand j'ai essayé ceci, la sauvegarde s'est arrêtée et l'archive résultante a été cassée.
  • Vous pouvez donner un mot de passe pour chiffrer votre sauvegarde. Je n'ai aucune information sur la sécurité du mot de passe. Mais il est très probable que vous ne puissiez pas restaurer la sauvegarde effectuée au cas où vous oublieriez ce mot de passe.
  • Je ne sais pas comment restaurer une telle sauvegarde sur d'autres téléphones. J'ai même jamais essayé la restauration, donc je ne peux pas aider ici aussi.

Remarques:

  • adb help montre toutes les options possibles pour adb backup
  • Fermez toutes les applications ouvertes sur votre téléphone avant la sauvegarde. Je ne sais pas si cela est nécessaire, mais cela ne peut certainement pas nuire.
  • Laissez le téléphone seul pendant l'exécution de la sauvegarde. Je ne sais pas si cela est nécessaire, mais cela ne peut certainement pas nuire.
  • Ne soyez pas impatient. Laissez la sauvegarde suffisamment de temps. À mes côtés, je vois une progression d’environ 100 Mo/minute (YMMV). Donc, la sauvegarde prend environ une demi-heure pour mon téléphone (2,5 Go).

Apparemment adb backup ne sauvegarde pas complètement tout!

J'ai jeté un coup d'oeil dans la sauvegarde (cd X && dd if=../XXXX.adb bs=24 skip=1 | zlib-flate -uncompress | tar xf -) et n’a pas trouvé toutes les applications installées.

Ce que j'ai pu trouver, c'est (notez que cette liste est incomplète):

  • Carte SD émulée interne: shared/0
  • Carte SD externe: shared/1
  • Applications: apps/ - de nombreuses applications (telles que Google Authenticator) étaient manquantes
  • Calendrier: apps/com.Android.providers.calendar/db/calendar.db (Probablement)

Ce que je n'ai pas pu trouver (notez que cette liste est incomplète):

  • Les alarmes. (Je n'étais probablement pas capable de détecter la bonne application)
  • Carte SD externe complète (il y a plus sur cette carte que ce qui est montré ci-dessous share/1. Par exemple, les applications déplacées vers SD.)

Conclusions:

  • Parfois adb backup pourrait créer des sauvegardes corrompues, ce qui peut passer inaperçu. Donc, vérifiez votre sauvegarde ou effectuez des sauvegardes fréquentes et prétendez avoir la chance de ne pas corrompre toutes les sauvegardes.
  • Avec adb backup vous obtenez une sauvegarde de la plupart de vos données précieuses, telles que des images de caméra, etc. Il pourrait être un peu difficile de le décompresser, cependant.
  • adb backup ne suffit pas pour effectuer une sauvegarde complète de votre téléphone.
  • adb backup ne suffit pas pour sauvegarder votre carte SD, vous risquez de la remplacer par une nouvelle carte si le contenu est restauré. C'est très triste!

PS: La faute de frappe " Forth " n'est pas accidentelle.

PPS: zlib-flate peut être trouvé dans le paquet qpdf sous Ubuntu 18.04

9
Tino

Cela vient de fonctionner avec Ubuntu 15.10 ("astucieux") pour sauvegarder un Galaxy SM-G900V sous Android version 6.0.1.

Installé avec:

Sudo apt-get install Android-tools-adb

Ensuite, j'ai exécuté ce qui suit à partir de la ligne de commande (sans 'Sudo'):

adb backup -apk -shared -all -f backup.adb

Résultat:

user@hostname:~/droid$ ls -lah
total 1.2GB
drwxrwxr-x  2 user user 4.0BK Mar  6 18:43 .
drwxr-xr-x 52 user user 4.0KB Mar  6 17:40 ..
-rw-r-----  1 user user 1.2GB Mar  6 18:29 backup.ab

Merci "NG". Je commençais à penser que mon téléphone était bouché.

A oublié d'ajouter: Exécution de la version d'annonce: Android Debug Bridge version 1.0.31

5
Edmund

Le problème est la version adb de votre PC. En utilisant adb version 1.0.31 , la sauvegarde/restauration sera réussie.

Plus d'infos sur: https://Android.stackexchange.com/questions/83080/adb-backup-creates-0-byte-file-prompts-for-current-backup-password-even While et Comment déclasser ma version de SDK?

Si votre appareil a une version adb antérieure à 1.0.31, vous devez utiliser une version adb de 1.0.31 sur PC. Les versions de adb 1.0.32+ ont cassé la compatibilité ascendante. Source: Numéro 208337

4
Alan CN

Apparemment, toutes les applications ne peuvent pas être sauvegardées. Android autorise apparemment les applications à désactiver la sauvegarde :(

https://developer.Android.com/guide/topics/manifest/application-element.html (recherche de allowbackup)

3
olejorgenb

En cas de problème persistant - Dans Windows, j’ai trouvé que les guillemets ne contenaient que le répertoire, par exemple, "C:\Utilisateurs\NOM\backup.ab" fonctionnait.

1
Piers