Vorausgesetzt, Sie haben es nicht mit einem Passwort geschützt:
dd if=$1 bs=24 skip=1 | openssl zlib -d >${1%%.ab}.tar
dd
ist der "Disk Duplicator" (auch als "Disk Destroyer" bekannt, falls Sie seine Parameter verwechseln if
und schalten und of
;)
bs=23
empfiehlt die Verwendung einer Blockgröße von 24 Byte, die wir benötigen, um…
skip=1
1 Block mit 24 Byte überspringen (der "Backup-Header")
- Die Ausgabe wird weitergeleitet, um sie
openssl
zu verarbeiten und zu entpacken
- … Und die Ausgabe davon wird an einen Tarball umgeleitet
Von dort aus sollten Sie Ihren Weg kennen: einfach "entpacken" (extrahieren), was Sie wollen.
Warum verwendet es $1
? Nun, ich habe diese Zeile aus kopiert ab2tar
, die in meinem kleinen Tool Adebar enthalten ist, an dem Sie vielleicht auch interessiert sind: Erstellt eine schöne Gerätedokumentation, Sicherungsskripte und mehr, alles über ADB, wobei nur Bash verwendet wird kleines Shell-Skript, und nennen Sie es:
ab2tar twrp-20170322.ab
Dann finden Sie ein twrp-20170322.tar
als Ergebnis. Dies muss natürlich openssl
auf Ihrem Linux-Computer installiert sein.
--compress
beim Erstellen des Backups nicht angegeben haben , unkomprimierte Backups erstellen? Versuchen Sie im letzteren Fall, denzlib
Parameter wegzulassen (oder machen Sie es umgekehrt und geben Sie ihn--compress
beim Erstellen des Backups an;).openssl
). Aber wenn ich versuche, den Inhalt des tar-Archivs mit tar -tf twrp-20170320.tar aufzulisten, erhalte ich: tar: Dies sieht nicht wie ein tar-Archiv aus; tar: Zum nächsten Header springen; Teer: Beenden mit Fehlerstatus aufgrund früherer Fehler--compress
Option nicht zu verwendenadb
: Sie komprimiert viel weniger effizient alsxz
. Ich bevorzuge es, so viel Platz wie möglich zu sparen. Aber das hängt nicht mit meinem anfänglichen Problem zusammen.--compress
). Aus Ihrer Aussage (adb backup …
) habe ich das gleiche Format angenommen. Wenn Sie nur eine andere Komprimierung verwenden, müssen Sie dies berücksichtigen.openssl
wird benötigt, um das Backup zu entschlüsseln - ohne das erhalten Sie keine gültige.tar
. Aus Ihren letzten Kommentaren würde ich annehmen, dass Siezlib
durch das entsprechende Teil für ersetzen solltenxz
. Abgesehen davon habe ich keine Ideen mehr, sorry.Ich habe festgestellt, dass TWRP-generierte
.ab
Dateien sich von den normalenadb backup
Dateien unterscheiden, sodass sich der Offset von normalen.ab
Dateien unterscheidet. Ich konnte Dateien mit dem folgenden Befehl überprüfen und extrahieren (z. B. um sie zu überprüfen):Anscheinend kann der Header länger sein, aber er sollte an 512-Byte-Grenzen ausgerichtet sein. Erhöhen Sie also einfach den
skip=
Parameter, wenn er zuerst nicht gefunden werden kann.Beachten Sie, dass das Dateiformat in twadbstream.h definiert ist , wenn Sie sich weiter damit befassen müssen.
quelle
Das Problem mit dem naiven dd-basierten Ansatz ist, dass die Datei von Zeit zu Zeit Metadaten enthält. Dies führt zu einer Beschädigung von Dateien mit einer signifikanten Länge.
Ich habe ein Extraktions-Tool mit twadbstream.h geschrieben (danke @anarcat), mit dem ich große TWRP ADB-Backups mit mehreren Dateisystemen (~ 10 GB) erfolgreich wiederhergestellt habe. twrpabx
quelle