Estrai i backup TWRP realizzati con adb


10

Ho uno smartphone Samsung Galaxy S2 GT-I9100 con LineageOS e TWRP. Ogni settimana eseguo un backup con il seguente comando:

adb backup -f twrp-20170322.ab --twrp boot data system

Opzionalmente posso usare anche l' --compressopzione.

C'è un modo per estrarre il twrp-20170322.abfile di backup con gli strumenti da riga di comando GNU / Linux standard? Prenderò anche in considerazione l'installazione di software aggiuntivo se necessario, ma deve essere gratuito (come in libertà).

link:

Risposte:


1

Se non lo hai protetto con una password:

dd if=$1 bs=24 skip=1 | openssl zlib -d >${1%%.ab}.tar
  • ddè il "Duplicatore di dischi" (noto anche come "distruttore di dischi" nel caso in cui si confondano i suoi parametri con switch ife of;)
  • bs=23 consiglia di utilizzare una dimensione del blocco di 24 byte, che dobbiamo ...
  • skip=1 salta 1 blocco di 24 byte (l'intestazione "Backup")
  • l'output viene convogliato opensslper elaborarlo e decomprimerlo
  • ... e l'output che viene reindirizzato a Tarball

Da lì, dovresti conoscere la tua strada: semplicemente "untar" (estrai) quello che vuoi.

Perché usa $1? Bene, ho copiato questa riga ab2tar, che è inclusa nel mio piccolo strumento Adebar che potrebbe interessarti anche: crea una bella documentazione del dispositivo, script di backup e altro, il tutto tramite ADB usando nient'altro che Bash 😇 Quindi metti quella riga in un minuscolo piccolo script di shell e chiamalo:

ab2tar twrp-20170322.ab

Quindi trova un twrp-20170322.tarrisultato. Naturalmente, questo richiede openssll'installazione sul tuo computer Linux.


Ricevo il seguente messaggio di errore: 140376894071512: errore: 29065064: lib (41): BIO_ZLIB_READ: errore di gonfiaggio di zlib: c_zlib.c: 548: errore di zlib: errore di dati
Francesco Turco

Non l'ho mai visto. Potrebbe essere TWRP utilizzare un metodo di compressione diverso rispetto all'ADB standard (non sono riuscito a trovare dettagli al riguardo)? Oppure, come non specificato --compressdurante la creazione del backup, crea backup non compressi? In quest'ultimo caso, prova a tralasciare il zlibparametro (oppure esegui il contrario e specifica --compressquando crei il backup;).
Izzy

Ho provato con: dd if = twrp-20170320.ab bs = 24 skip = 1> twrp-20170320.tar (senza inserimento openssl). Ma quando provo ad elencare il contenuto dell'archivio tar con tar -tf twrp-20170320.tar ottengo: tar: questo non sembra un archivio tar; tar: passa all'intestazione successiva; tar: uscita con stato di errore a causa di errori precedenti
Francesco Turco

C'è una ragione per non usare l' --compressopzione con adb: si comprime in modo meno efficiente di xz. Preferisco risparmiare più spazio possibile. Ma questo non è legato al mio problema iniziale.
Francesco Turco,

Quello che ho descritto sopra funziona benissimo per i backup ADB "normali" (lo uso spesso per quelli, e non ne uso --compressneanche lì). Dalla tua affermazione ( adb backup …) ho assunto lo stesso formato. Se stai solo utilizzando una compressione diversa, devi considerarla. opensslè necessario per decrittografare il backup, quindi senza di ciò non si ottiene un valido .tar. Dai tuoi ultimi commenti, suppongo che dovresti sostituire zlibla parte corrispondente per xz. A parte questo, sono senza idee, scusa.
Izzy

1

Ho scoperto che i .abfile generati da TWRP sono diversi dai adb backupfile normali , quindi l'offset è diverso dai .abfile normali . Sono stato in grado di ispezionare ed estrarre i file utilizzando (ad esempio per ispezionare) il seguente comando:

dd if=backup.ab bs=512 skip=1 | tar ft -

Apparentemente, l'intestazione potrebbe essere più lunga, ma dovrebbe essere allineata con i limiti di 512 byte, quindi è sufficiente skip=eseguire il bump del parametro se non riesce a trovarlo all'inizio.

Si noti che il formato del file è definito in twadbstream.h , se è necessario approfondire ulteriormente.


0

Il problema con l'approccio ingenuo basato su dd è che ci sono metadati ogni tanto nel file. Ciò comporta la corruzione per file di qualsiasi lunghezza significativa.

Ho scritto uno strumento di estrazione utilizzando twadbstream.h (grazie a @anarcat) che ho usato per recuperare con successo grandi backup ADB TWRP multi-filesystem (~ 10GB). twrpabx

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.