Jag använder adb backup
för att säkerhetskopiera min Android-smartphone; och som noteras i många inlägg, som https://stackoverflow.com/questions/18533567/how-to-extract-or-unpack-an-ab-file-android-backup-file – Jag har försökt konvertera den till .gz; till exempel:
$ 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
En kommentar i det länkade SO-inlägget nämner:
Det klagar antagligen eftersom backup.ab inte har rätt gzip-sidfot med CRC-32-kontrollsumma och längd
Så min fråga är: ges en mybackup.gz som ovan, som har en korrekt .gz-filrubrik men felaktig sidfot – hur skulle jag kunna skapa och lägga till eller byta ut sidfoten (förhoppningsvis detta är genomförbart i vanligt skal / Bash, men jag skulle inte ha något emot en annan språklösning), så att från mybackup.gz
får jag mybackup_fixed.gz
, som skulle innehålla alla tillgängliga data, men inte skulle orsaka en unexpected end of file
när den inspekteras med, säg tar tzvf
?
tail
-kommando skiljer sig ganska fråntail -c +25 mybackup.ab
.