Eu uso adb backup para fazer backup do meu smartphone Android; e conforme observado em muitas postagens, como https://stackoverflow.com/questions/18533567/how-to-extract-or-unpack-an-ab-file-android-backup-file – Tentei convertê-lo para .gz; por exemplo:

 $ 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  

Um comentário na postagem do SO vinculada menciona:

Provavelmente está reclamando porque o backup.ab não tem o rodapé do arquivo gzip adequado com soma de verificação CRC-32 e comprimento

Então, minha pergunta é: dado um mybackup.gz como acima, que tem um cabeçalho de arquivo .gz correto, mas um rodapé de arquivo incorreto – como eu poderia gerar e acrescentar ou substituir o rodapé (espero isso é possível em shell / Bash simples, mas eu não me importaria com uma solução de idioma diferente), de modo que de mybackup.gz eu obtenho mybackup_fixed.gz , que conteria todos os dados disponíveis, mas não causaria um unexpected end of file quando inspecionado com, digamos, tar tzvf?

Comentários

  • Esse comando mágico não ' não parece o mesmo que na resposta à pergunta SO. Seu comando tail é bem diferente de tail -c +25 mybackup.ab.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *