Витягнути резервні копії 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.