Ich verwende adb backup
, um mein Android-Smartphone zu sichern. und wie in vielen Beiträgen erwähnt, wie z. B. https://stackoverflow.com/questions/18533567/how-to-extract-or-unpack-an-ab-file-android-backup-file – Ich habe versucht, es in .gz zu konvertieren. Zum Beispiel:
$ 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
Ein Kommentar im verlinkten SO-Beitrag erwähnt:
Es wird wahrscheinlich beanstandet, weil die Datei backup.ab nicht über die richtige Fußzeile für gzip-Dateien mit CRC-32-Prüfsumme und Länge verfügt.
Meine Frage lautet also: Bei einem mybackup.gz wie oben, das einen korrekten .gz-Dateikopf, aber eine falsche Dateifußzeile hat – wie könnte ich die Fußzeile generieren und anhängen oder ersetzen (hoffentlich)? Dies ist in Plain Shell / Bash machbar, aber ich hätte nichts gegen eine andere Sprachlösung), so dass ich aus mybackup.gz
mybackup_fixed.gz
erhalte , die alle verfügbaren Daten enthalten würde, aber kein unexpected end of file
verursachen würde, wenn sie beispielsweise mit tar tzvf
?
Kommentare
- Dieser magische Befehl ' sieht nicht so aus wie in der Antwort auf die SO-Frage. Ihr Befehl
tail
unterscheidet sich erheblich vontail -c +25 mybackup.ab
.