11 votes

Extraire les sauvegardes TWRP faites avec adb

J'ai un smartphone Samsung Galaxy S2 GT-I9100 avec LineageOS et TWRP. Chaque semaine, je fais une sauvegarde avec la commande suivante :

adb backup -f twrp-20170322.ab --twrp boot data system

Je peux éventuellement utiliser le --compress également.

Existe-t-il un moyen d'extraire le twrp-20170322.ab avec les outils standard de ligne de commande GNU/Linux ? J'envisagerai également d'installer des logiciels supplémentaires si nécessaire, mais ils doivent être gratuits (comme dans liberté).

Liens :

2voto

anarcat Points 163

J'ai découvert que les fichiers générés par TWRP .ab sont différents des fichiers normaux adb backup le décalage est donc différent de celui des fichiers normaux .ab des dossiers. J'ai pu inspecter et extraire des fichiers en utilisant (par exemple pour inspecter) la commande suivante :

dd if=backup.ab bs=512 skip=1 | tar ft -

Apparemment, l'en-tête peut être plus long, mais il doit être aligné sur des limites de 512 octets, donc il suffit de faire sauter le bouton skip= s'il ne peut pas le trouver au début.

Notez que le format du fichier est défini dans twadbstream.h si vous souhaitez approfondir la question.

2voto

arifogel Points 21

Le problème avec l'approche naïve basée sur le dd est qu'il y a des métadonnées de temps en temps dans le fichier. Cela entraîne une corruption pour les fichiers d'une longueur significative.

J'ai écrit un outil d'extraction utilisant twadbstream.h (merci @anarcat) que j'ai utilisé pour récupérer avec succès de grosses sauvegardes ADB TWRP multi-systèmes de fichiers (~10GB). twrpabx

1voto

Milner Points 533

A condition que vous ne l'ayez pas protégé par un mot de passe :

dd if=$1 bs=24 skip=1 | openssl zlib -d >${1%%.ab}.tar
  • dd est le "Duplicateur de disque" (également connu sous le nom de "destructeur de disque" au cas où vous confondriez ses paramètres et son interrupteur. if y of ;)
  • bs=23 lui conseille d'utiliser une taille de bloc de 24 octets, ce que nous devons
  • skip=1 sauter 1 bloc de 24 octets (le "Backup header")
  • la sortie est acheminée vers openssl pour le traiter et le déballer
  • et le résultat de cette opération est redirigé vers un Tarball

A partir de là, vous devriez connaître votre chemin : il suffit de "untar" (extraire) ce que vous voulez.

Pourquoi il utilise $1 ? Eh bien, j'ai copié cette ligne de ab2tar qui est inclus dans mon petit outil Adebar qui pourrait également vous intéresser : il crée une belle documentation sur le périphérique, des scripts de sauvegarde et bien plus encore, le tout via ADB en utilisant uniquement Bash. Mettez donc cette ligne dans un tout petit script shell et appelez-le :

ab2tar twrp-20170322.ab

Ensuite, trouvez un twrp-20170322.tar comme résultat. Bien sûr, cela nécessite openssl à installer sur votre machine Linux.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X