web-dev-qa-db-fra.com

Comment extraire ou décompresser un fichier .ab (fichier de sauvegarde Android)

J'utilise un périphérique Android 4.0.3 et je souhaite extraire le fichier de sauvegarde créé par:

adb backup -f ~/data.ab -noapk app.package.name

La ligne ci-dessus fonctionne dans le CMD (Windows) et je peux obtenir le fichier data.ab dans le répertoire '~'.

Ce que je ne peux pas faire, c'est extraire ce fichier avec CMD. J'ai essayé les deux méthodes ci-dessous.

dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -

dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -

Je reçois l'erreur ci-dessous

error

J'ai essayé de l'extraire via CYGWIN, mais j'ai aussi échoué.

error

Où devrais-je faire l'extraction? Dans quel répertoire mon invite de commande devrait-il être? Des idées?

43
tony9099

Selon https://Android.stackexchange.com/a/78183/23906 , vous pouvez exécuter une commande d'une ligne sous Linux pour ajouter un en-tête tar approprié pour l'extraire.

( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 backup.ab ) | tar xfvz -

Remplacez backup.ab par le chemin d'accès à votre fichier.

44
Puddler

J'ai également dû décompresser un fichier .ab - et trouvé ce post tout en cherchant une réponse. Ma solution suggérée est Android Backup Extractor , un outil gratuit Java pour Windows, Linux et Mac OS.

Assurez-vous de jeter un coup d'œil au README , si vous rencontrez un problème. Vous devrez peut-être télécharger d'autres fichiers si votre fichier .ab - est protégé par mot de passe.

Usage:
Java -jar abe.jar [-debug] [-useenv=yourenv] unpack <backup.ab> <backup.tar> [password]

Exemple:

Disons que vous avez un fichier test.ab, Qui n'est pas protégé par mot de passe, vous utilisez Windows et vous souhaitez que l'archive .tar Résultante s'appelle test.tar. Alors votre commande devrait être:

Java.exe -jar abe.jar unpack test.ab test.tar ""

31
finefoot