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?

Kommentarer

  • Den magiske kommando ser ikke ' ikke ud som i svaret på SO-spørgsmålet. Din tail kommando er ret forskellig fra tail -c +25 mybackup.ab.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *