Витягнути резервні копії TWRP, зроблені за допомогою adb


10

У мене смартфон Samsung Galaxy S2 GT-I9100 з LineageOS та TWRP. Щотижня я роблю резервну копію з наступною командою:

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

Я також необов'язково можу використовувати --compressваріант.

Чи є спосіб витягти twrp-20170322.abфайл резервного копіювання за допомогою інструментів командного рядка stardard GNU / Linux? Я також розглядаю можливість встановлення додаткового програмного забезпечення за потреби, але воно повинно бути безкоштовним (як на волі).

Посилання:

Відповіді:


1

Якщо ви не захистили його паролем:

dd if=$1 bs=24 skip=1 | openssl zlib -d >${1%%.ab}.tar
  • dd- це "Дисковий копіювальник" (також відомий як "руйнівник диска", якщо ви переплутаєте його параметри ifі перемикач і of;)
  • bs=23 радить використовувати блок розміром 24 байти, який нам потрібно ...
  • skip=1 пропустити 1 блок з 24 байтів ("Заголовок резервного копіювання")
  • вихід отримує трубопровід для opensslйого обробки та розпакування
  • … І вихід з цього перенаправляється на Tarball

Звідти ви мусите знати свій шлях: просто «зніміть» (витягніть) те, що ви хочете.

Для чого він використовується $1? Ну, я скопіював цей рядок ab2tar, який входить до мого маленького інструменту Adebar, який, можливо, вас також зацікавить: створює приємну документацію на пристрій, резервні копії та інше, все через ADB, не використовуючи нічого, крім Bash. маленький скрипт оболонки, і назвіть його:

ab2tar twrp-20170322.ab

Потім знайдіть twrp-20170322.tarрезультат. Звичайно, це потрібно opensslвстановити на вашій машині Linux.


Я отримую таке повідомлення про помилку: 140376894071512: помилка: 29065064: lib (41): BIO_ZLIB_READ: помилка надуття zlib: c_zlib.c: 548: помилка zlib: помилка даних
— Francesco Turco

Ніколи цього не бачив. Чи може бути, що TWRP використовує інший метод стиснення, ніж стандартний ADB (я не можу знайти деталі про це)? Або, як ви не вказали --compressпід час створення резервної копії, створює нестиснені резервні копії? В останньому випадку спробуйте виключити zlibпараметр (або зробіть це навпаки та вкажіть --compressпід час створення резервної копії;).
— Izzy

Я спробував з: dd if = twrp-20170320.ab bs = 24 skip = 1> twrp-20170320.tar (без вставки openssl). Але коли я намагаюся перерахувати вміст архіву дьогтю з tar -tf twrp-20170320.tar, я отримую: tar: Це не схоже на архів дьогтю; tar: перехід до наступного заголовка; тар: Вихід зі статусом відмови через попередні помилки
— Франческо Турко

Існує причина не використовувати цю --compressопцію з adb: вона стискає шлях менш ефективно, ніж xz. Я вважаю за краще заощадити якомога більше місця. Але це не пов’язано з моєю початковою проблемою.
— Франческо Турко

Те, що я описав вище, добре працює для "нормальних" резервних копій ADB (я часто використовую їх для цих, і я також не використовую --compress) З вашої заяви ( adb backup …) я припустив той самий формат. Якщо ви просто використовуєте інше стиснення, ви повинні це врахувати. opensslпотрібно розшифрувати резервну копію - тому без цього ви не отримаєте дійсну .tar. З ваших останніх коментарів я припускаю, що вам слід замінити zlibвідповідну частину для xz. Окрім того, мені не до думки, вибачте.
— Izzy

1

Я виявив, що .abфайли, створені TWRP , відрізняються від звичайних adb backupфайлів, тому зміщення відрізняється від звичайних .abфайлів. Мені вдалося перевірити та витягнути файли, використовуючи (наприклад, для огляду) таку команду:

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

Мабуть, заголовок може бути довшим, але він повинен бути вирівняний з 512-байтовими межами, тому просто збийте skip=параметр, якщо він спочатку не може його знайти.

Зауважте, що формат файлу визначений у twadbstream.h , якщо вам потрібно додатково розібратися в цьому.


0

Проблема з наївним підходом на базі даних полягає в тому, що у файлі так часто є метадані. Це призводить до пошкодження файлів будь-якої значної тривалості.

Я написав інструмент вилучення, використовуючи twadbstream.h (спасибі @anarcat), який використовував для успішного відновлення великих (~ 10 Гб) багатофайлових резервних копій TWRP ADB. twrpabx

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.