Jeg bruger adb backup
til at sikkerhedskopiere min Android-smartphone; og som bemærket i mange indlæg, såsom https://stackoverflow.com/questions/18533567/how-to-extract-or-unpack-an-ab-file-android-backup-file – Jeg har forsøgt at konvertere det til .gz; for eksempel:
$ 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 linkede SO-indlæg nævner:
Det klager sandsynligvis, fordi backup.ab ikke har den rigtige gzip-filfod med CRC-32 kontrolsum og længde
Så mit spørgsmål er: givet en mybackup.gz som ovenfor, som har en korrekt .gz filhoved, men forkert filfod – hvordan kunne jeg generere og tilføje eller udskifte sidefoden (forhåbentlig dette kan gøres i almindelig shell / Bash, men jeg har ikke noget imod en anden sprogløsning), så fra mybackup.gz
får jeg mybackup_fixed.gz
, som ville indeholde alle tilgængelige data, men ikke ville medføre en unexpected end of file
når den inspiceres med f.eks. tar tzvf
?
tail
kommando er ret forskellig fratail -c +25 mybackup.ab
.