Ich habe ein Samsung Galaxy S2 GT-I9100 Smartphone mit LineageOS und TWRP. Jede Woche mache ich ein Backup mit dem folgenden Befehl:
adb backup -f twrp-20170322.ab --twrp boot data system
Optional kann ich die --compress
Option auch nutzen.
Gibt es eine Möglichkeit, die twrp-20170322.ab
Sicherungsdatei mit Standard-GNU/Linux-Befehlszeilentools zu extrahieren? Ich werde auch erwägen, bei Bedarf zusätzliche Software zu installieren, aber sie muss kostenlos sein (wie in Freiheit).
Verbindungen:
Ich habe festgestellt, dass sich TWRP-generierte .ab
Dateien von den normalen adb backup
Dateien unterscheiden, daher unterscheidet sich der Offset von normalen .ab
Dateien. Ich war in der Lage, Dateien mit dem folgenden Befehl zu inspizieren und zu extrahieren (zum Beispiel zum Inspizieren):
dd if=backup.ab bs=512 skip=1 | tar ft -
Anscheinend kann der Header länger sein, aber er sollte an 512-Byte-Grenzen ausgerichtet sein, also stoßen Sie einfach den skip=
Parameter, wenn er ihn zuerst nicht finden kann.
Beachten Sie, dass das Dateiformat in twadbstream.h definiert ist , falls Sie sich weiter damit befassen müssen.
Das Problem mit dem naiven dd-basierten Ansatz besteht darin, dass die Datei hin und wieder Metadaten enthält. Dies führt zu einer Beschädigung von Dateien beliebiger Länge.
Ich habe ein Extraktionstool unter Verwendung von twadbstream.h (danke @anarcat) geschrieben, das ich verwendet habe, um große (~10 GB) Multi-Dateisystem-TWRP-ADB-Backups erfolgreich wiederherzustellen. twrpabx
Sofern Sie es nicht mit einem Passwort geschützt haben:
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 und wechseln if
und of
;)bs=23
rät ihm, eine Blockgröße von 24 Byte zu verwenden, die wir brauchen, um…skip=1
1 Block von 24 Byte überspringen (der "Backup-Header")openssl
sie zu verarbeiten und zu entpackenVon da an sollten Sie Ihren Weg kennen: einfach "enttarnen" (extrahieren), was Sie wollen.
Warum verwendet es $1
? Nun, ich habe diese Zeile aus kopiert ab2tar
, die in meinem kleinen Tool Adebar enthalten ist, das Sie vielleicht auch interessieren könnte: erstellt eine nette Gerätedokumentation, Backup-Skripte und mehr, alles über ADB, nur mit Bash 😇 Also packen Sie diese Zeile in eine winzige kleines Shell-Skript, und nennen Sie es:
ab2tar twrp-20170322.ab
Dann finden Sie a twrp-20170322.tar
als Ergebnis. Dies muss natürlich openssl
auf Ihrem Linux-Rechner installiert sein.
--compress
haben, unkomprimierte Backups erstellen? Versuchen Sie im letzteren Fall, den zlib
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; tar: Beenden mit Fehlerstatus aufgrund früherer Fehler--compress
Option mit nicht zu verwenden adb
: Sie komprimiert viel weniger effizient als xz
. Ich bevorzuge es, so viel Platz wie möglich zu sparen. Aber das hat nichts mit meinem anfänglichen Problem zu tun.--compress
dort auch kein). 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 also keine gültige .tar
. Aus Ihren letzten Kommentaren gehe ich davon aus, dass Sie zlib
durch den entsprechenden Teil für ersetzen sollten xz
. Abgesehen davon gehen mir die Ideen aus, sorry.adb backup
wird kein "ADB-Backup" erstellt? Das ist ziemlich verwirrend.data.ext4.win
einen 1536-Byte-Header, ist aber in Datenblöcke "aufgebrochen". es kann auch mehrere Partitionen enthalten sourceforge.net/p/adbextractor/discussion/general/thread/…
TrojanName
Sandro Antonucci
TrojanName