Jutilise adb backup
pour sauvegarder mon smartphone Android; et comme indiqué dans de nombreux articles, tels que https://stackoverflow.com/questions/18533567/how-to-extract-or-unpack-an-ab-file-android-backup-file – jai essayé de le convertir en .gz; par exemple:
$ adb backup -apk -shared -all -f mybackup.ab Now unlock your device and confirm the backup operation... $ (printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -n +5 mybackup.ab) > mybackup.gz $ tar tzvf mybackup.gz ... gzip: stdin: unexpected end of file drwxrwx--- 0/9997 0 2020-02-22 10:23 shared/0/Notifications drwxrwx--- 0/9997 0 2020-02-22 10:23 shared/0/Ringtones drwxrwx--- 0/9997 0 2020-02-22 10:23 shared/0/Podcasts tar: Child returned status 1 tar: Error is not recoverable: exiting now
Un commentaire dans la publication du SO lié mentionne:
Il se plaint probablement parce que backup.ab na pas le pied de page de fichier gzip approprié avec la somme de contrôle CRC-32 et la longueur
Donc, ma question est: étant donné un mybackup.gz comme ci-dessus, qui a un en-tête de fichier .gz correct mais un pied de page de fichier incorrect – comment pourrais-je générer et ajouter ou remplacer le pied de page (avec un peu de chance ceci est faisable en plain shell / Bash, mais je ne voudrais pas une solution de langage différente), de sorte que de mybackup.gz
jobtiens mybackup_fixed.gz
, qui contiendrait toutes les données disponibles, mais ne provoquerait pas de unexpected end of file
lors de linspection avec, par exemple, tar tzvf
?
tail
est assez différente detail -c +25 mybackup.ab
.