K zálohování svého smartphonu se systémem Android používám adb backup
; a jak je uvedeno v mnoha příspěvcích, například https://stackoverflow.com/questions/18533567/how-to-extract-or-unpack-an-ab-file-android-backup-file – pokusil jsem se jej převést na .gz; například:
$ 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
Komentář v zmíněném příspěvku SO uvádí:
Pravděpodobně si stěžuje, protože soubor backup.ab nemá správnou zápatí souboru gzip s kontrolním součtem a délkou CRC-32
Takže moje otázka zní: vzhledem k výše uvedenému mybackup.gz, který má správné záhlaví souboru .gz, ale nesprávné zápatí souboru – jak bych mohl vygenerovat a připojit nebo nahradit zápatí (snad to je možné v prostém prostředí / Bash, ale nevadilo by mi jiné jazykové řešení), takže od mybackup.gz
získávám mybackup_fixed.gz
, který by obsahoval všechna dostupná data, ale nezpůsobil by unexpected end of file
při kontrole například tar tzvf
?
tail
se zcela liší od příkazutail -c +25 mybackup.ab
.