adbで作成されたTWRPバックアップを抽出する


10

LineageOSとTWRPを搭載したSamsung Galaxy S2 GT-I9100スマートフォンを持っています。毎週、次のコマンドを使用してバックアップを作成します。

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

オプションでオプションも使用--compressできます。

twrp-20170322.abstardard GNU / Linuxコマンドラインツールでバックアップファイルを抽出する方法はありますか?必要に応じて追加のソフトウェアをインストールすることも検討しますが、それは(自由のように)無料でなければなりません。

リンク:

回答:


1

パスワードで保護しなかった場合:

dd if=$1 bs=24 skip=1 | openssl zlib -d >${1%%.ab}.tar
  • dd「ディスクデュプリケーター」(また、あなたがそのパラメータANSスイッチを混乱させる場合には、「ディスク駆逐艦」として知られているifof、)
  • bs=23 24バイトのブロックサイズを使用するようにアドバイスしています。
  • skip=1 24バイトの1ブロックをスキップ(「バックアップヘッダー」)
  • 出力をパイプopenssl処理して処理し、解凍します
  • …そして、その出力はTarballにリダイレクトされます

そこから、あなたはあなたのやり方を知っているべきです:単にあなたが望むものを「解凍」(抽出)してください。

なぜ使用するの$1ですか?さて、私ab2tarはあなたが興味を持っているかもしれない私の小さなツールAdebarに含まれているからこの行をコピーしました:Bashだけを使ってADB経由で素晴らしいデバイスドキュメント、バックアップスクリプトなどを作成します😇したがって、その行を小さな小さなシェルスクリプト、そしてそれを呼び出します:

ab2tar twrp-20170322.ab

次に、twrp-20170322.tar結果を見つけます。もちろん、これはopensslLinuxマシンにインストールする必要があります。


次のエラーメッセージが表示されます:140376894071512:error:29065064:lib(41):BIO_ZLIB_READ:zlib inflate error:c_zlib.c:548:zlib error:data error
Francesco Turco

それを見たことがない。TWRPが標準のADBとは異なる圧縮方法を使用しているのでしょうか(詳細は見つかりませんでした)。または、--compressバックアップの作成時に指定しなかったため、非圧縮のバックアップを作成しますか?後者の場合は、zlibパラメーターを省略してみてください(または、逆--compressにしてバックアップを作成するときに指定します;)。
イジー

私は試してみました:dd if = twrp-20170320.ab bs = 24 skip = 1> twrp-20170320.tar(挿入せずにopenssl)。しかし、tar -tf twrp-20170320.tarを使用してtarアーカイブの内容を一覧表示しようとすると、次のようになります。tar:これはtarアーカイブのようには見えません。tar:次のヘッダーにスキップします。tar:以前のエラーのために失敗ステータスで終了します
Francesco Turco

--compressオプションを一緒に使用しないのには理由がありますadb。それはに比べて圧縮効率が低くなりますxz。できるだけ多くのスペースを節約したい。しかし、それは私の最初の問題とは関係ありません。
Francesco Turco

上記で説明した内容は、「通常の」ADBバックアップで正常に機能します(私はそれらを頻繁に使用しており、--compressそこでも使用していません)。あなたの声明(adb backup …)から私はまったく同じフォーマットを想定しました。別の圧縮を使用している場合は、それを考慮する必要があります。opensslバックアップの暗号化を解除するために必要です–それがないと、有効なを取得できません.tar。最後のコメントからzlib、の対応する部分に置き換える必要があると思いますxz。それとは別に、申し訳ありません。
イジー

1

TWRPで生成された.abファイルは通常のadb backupファイルとは異なるため、オフセットは通常の.abファイルとは異なります。次のコマンドを使用して(たとえば、検査するために)ファイルを検査して抽出することができました。

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

どうやら、ヘッダーは長くなる可能性がありますが、512バイトの境界に揃える必要があるためskip=、最初に見つからない場合はパラメーターをバンプするだけです。

これをさらに掘り下げる必要がある場合、ファイル形式はtwadbstream.hで定義されていることに注意してください。


0

単純なDDベースのアプローチの問題は、ファイルにメタデータが頻繁に存在することです。これにより、かなりの長さのファイルが破損します。

大規模な(〜10GB)マルチファイルシステムTWRP ADBバックアップを正常にリカバリするために使用したtwadbstream.h(@anarcatに感謝)を利用した抽出ツールを作成しました。 twrpabx

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.