Android の adb backup から一部だけリストアしちゃー
スマホ(Softbank 202F)が壊れて修理に出すことになって、出来る限りバックアップとっておこうと調べてみると、 Android SDK に含まれる ADB を使用してバックアップ/リストアができるらしい。取り敢えずこちらのサイトなどを参考にバックアップ。 -apk -shared - all -system のオプションでバックアップしたところ 15GB 程に…。念のため -noapk -noshared -all -nosystem のオプションでもバックアップしておく。これは 170MB 程。スマホは1週間程で戻ってきたけど、すぐにはリストアする時間がなく2日程使ってしまったので、リストア前にも後者のオプションで念のためバックアップ。
15GB のバックアップからのリストアは結構な時間がかかったけど、全てが元通りという訳ではなく、 Line がエラーして起動しなかったり Kobo, Sony Reader 等含めて本体にダウンロード済みのデータ(これらはマニュアルでバックアップ/リストアした)を認識してくれなかったり。修理で基盤交換とかしてるからなのか、そもそもバックアップが不完全なのか、それとも修理後しばらく使ってたのが悪かったのか。
修理後、おサイフケータイの再設定などはうっかり済ませてしまっていたけれど、どうせリストアで完全に元に戻らないのならと、これら設定を反映させるために修理後にとったバックアップも追加でリストアしてみた。
すると今度は「メモ帳」アプリのデータが消えてしまったので、取り敢えずそれだけは復活させたいと考えてみたメモ。前置き長すぎ(笑)。
因みに 202F の「メモ帳」アプリのパッケージは com.fujitsu.kservice.fnotepad_3thm みたい。
ADB バックアップデータと tar アーカイブを双方向に変換してくれるツールは既に存在するようで、こちらとかこちらとかを参考にバックアップデータを tar に変換し展開することで特定のパッケージを取り出すことができた。ただ、これを再び tar にして ADB バックアップデータに変換する際には注意が必要そう。
tar にまとめる際にファイルを格納する順序(実際にはパッケージディレクトリ直下のサブディレクトリの順序のみ?)が正しくないと、ちゃんとリストアしてくれないみたい。また、 tar の中でファイルエントリの前にそのファイルを含むディレクトリだけのエントリがあってもダメみたい。でも空のディレクトリはあり…?とか。
バックアップファイルのフォーマット仕様書を見つけられなかったので、前述のサイトなどを斜め読みし色々試しつつ、 ADB バックアップデータから取り出した tar を展開して得られるディレクトリツリーから ADB バックアップファイルを作るスクリプトを書いてみた。「メモ帳」アプリのデータが復元できる事と、 Line を ADB バックアップ→ tar に変換&展開→件のスクリプトで ADB バックアップファイル再構築→ ADB リストア→ ADB バックアップ…を行い、最初と最後の ADB バックアップファイルを tar に変換&展開して同一のモノが得られることは確認…って分かるかな?(笑)。
前述のサイトにあるツールは python や java, perl で書かれてたけど、統一感無く ruby で(笑)。バックアップファイルから取り出した tar を展開すると apps というディレクトリができるので、この apps ディレクトリがあるディレクトリでスクリプトを実行すると apps 以下の内容を含むバックアップファイル生成。スクリプト実行前にリストアしたいパッケージを取捨選択しておく。ホントは元の tar を展開せずに直接必要な部分だけ取り出せればいいんだろうけど、取り敢えず。
全てが元通りではないけれど、ひと通りリストアが終わったところで、ふと「ギャラリー」を開くと…え、修理に出してる間に代替機で撮影した写真がない!保存先は microSD にしてたはずなのに…と途方に暮れつつ「ギャラリー」アプリのデータを削除してスマホを再起動すると、「 SD カードをスキャンしています」的なメッセージの後、無事に全ての写真が表示されますた。
あ、スクリプトは OSX 10.9.4, ruby 2.0.0p451で動作確認。スクリプト内部で tar コマンド呼び出したりパイプ使ったりしてるので、 Unix 系システムがよさげ。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- AmigaOSのHDDジオメトリ (つづき)(2017.05.29)
- AmigaOSのHDDジオメトリ (つづく…)(2017.05.23)
- Firefox41 で .keysnail.js がエラーしてた件(2015.10.12)
「携帯・デジカメ」カテゴリの記事
- Android の adb backup から一部だけリストアしちゃー(2014.08.22)
- クレーンゲームでとったトイデジからの写真取り込みとか(2014.05.23)
- S90 カミングアウト(2009.12.25)
- S90(2009.12.23)
- SoftBank 931P のマルチタスク?(2009.12.03)
「スクリプティング」カテゴリの記事
- Android の adb backup から一部だけリストアしちゃー(2014.08.22)
- Python の正規表現が激遅だと思ったら(2013.05.27)
- Pythonの日本語版HTMLヘルプ再構築(2013.03.07)
- migemo の ruby 1.9 対応 (NTEmacs + Cygwin)(2012.10.30)
「Mac 関係」カテゴリの記事
- Android の adb backup から一部だけリストアしちゃー(2014.08.22)
- クレーンゲームでとったトイデジからの写真取り込みとか(2014.05.23)
- Xcode license agreements(2013.10.07)
「Android とか」カテゴリの記事
- Android の adb backup から一部だけリストアしちゃー(2014.08.22)
この記事へのコメントは終了しました。


コメント