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?

Kommentarer

  • Det magiska kommandot ser inte ' inte ut som i svaret på SO-frågan. Ditt tail -kommando skiljer sig ganska från tail -c +25 mybackup.ab.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *