更正/修复 .gz 文件中的“gzip:stdin:意外的文件结尾”?

更正/修复 .gz 文件中的“gzip:stdin:意外的文件结尾”?

我用来adb backup备份我的 Android 智能手机;正如许多帖子中所指出的,例如https://stackoverflow.com/questions/18533567/how-to-extract-or-unpack-an-ab-file-android-backup-file- 我尝试将其转换为.gz;例如:

$ 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

链接的 SO 帖子中的评论提到:

它可能会抱怨,因为 backup.ab 没有带有 CRC-32 校验和和长度的正确 gzip 文件页脚

所以,我的问题是:给定一个像上面这样的 mybackup.gz,它有一个正确的 .gz 文件头,但文件页脚不正确 - 我如何生成并附加或替换页脚(希望这在普通 shell/Bash 中是可行的,但我不介意不同的语言解决方案),这样mybackup.gz我就可以获得,它将包含所有可用数据,但在使用 ? 检查时mybackup_fixed.gz不会导致?unexpected end of filetar tzvf

相关内容