@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

adb backup で Android 端末のバックアップを作成する(7)

adb backup のオプションで パッケージ名を指定する事で、個別アプリケーションのバックアップを行う事ができます。

デバイス内のアプリケーションを確認するには、adb shell pm list packages コマンドを使うことが出来ます。下記では -3オプションによりサードパーティのアプリケーションにリストを絞っています。

c:\adt-bundle-windows-x86_64-20140624\sdk\platform-tools>adb shell pm list packages -3
package:com.linkedin.android
package:com.sonymobile.comicpirate
package:com.akazoo.music
package:jp.co.netvision.WifiConnectWI2
package:com.qoowaa.act
package:com.sonyericsson.trackid
package:jp.co.yahoo.android.yjtop
package:com.sonyericsson.androidapp.recorder
package:com.apalon.calculator.gp
package:com.evernote
package:la.droid.qr
package:com.hulu.plus.jp
package:jp.naver.line.android
package:de.gavitec.semc
package:jp.co.yahoo.android.apps.transit
package:com.sonymobile.androidapp.diagnostics
package:com.pixlr.express
package:com.ntt.voip.android.com050plus
package:jp.radiko.Player
package:com.mobisystems.office
package:com.whatsapp
package:wni.WeathernewsTouch.jp
package:com.twitter.android
package:jp.ad.iij.couponswitch
package:com.box.android
package:Unyverse.sony
package:com.facebook.orca
package:com.sony.gsmguxmk.xperiaprivilege2012
package:com.sony.playmemories.mobile
package:com.sony.tvsideview.phone

バックアップしたいアプリケーションを確認した後、adb backup コマンドでパッケージを指定してバックアップします。(Protectedの場合には、この方法ではバックアップは取れませんが)

例えば以下のようにパッケージ名を指定して実行します。

c:\adt-bundle-windows-x86_64-20140624\sdk\platform-tools>adb backup -apk -obb jp.naver.line.android
Now unlock your device and confirm the backup operation.

作成されたバックアップファイルを android backup extractor で tar 形式データに変換・展開すると、該当パッケージのフォルダのみが出力されている事を確認できます。

 

android backup extractor にはバックアップファイルを分割する sh スクリプトも含まれています。adb-split.sh を使うことでバックアップファイルをパッケージ毎に分割して出力してくれます。(先にCygwin環境にstar.exeをコピーしておく必要があります)

adb backup -apk -obb -all

バックアップを作成して、スクリプトを実行してみますがstarコマンドでこけました。

$ sh adb-split.sh backup.ab
Extracting ab archive...
Strong AES encryption allowed
Magic: ANDROID BACKUP
Version: 1
Compressed: 1
Algorithm: none
747075584 bytes written to backup.ab.tar.
Done
Extracting tar archive...
Done
Checking for apps folder...
Done
Checking if apps folder is not empty...
Done
Generating list of contents for each app...
Done
Creating individual tar archives...
star compression failed at android. Aborting.

 手元ではCygwin64 を使っていたのですが、32bit 版に変更してから実行してみたところ、問題なくパッケージ毎に分割されたバックアップファイルが作成できました。

$ sh adb-split.sh backup.ab
Extracting ab archive...
Strong AES encryption allowed
Magic: ANDROID BACKUP
Version: 1
Compressed: 1
Algorithm: none
747075584 bytes written to backup.ab.tar.
Done
Extracting tar archive...
cygwin warning:
MS-DOS style path detected: /cygdrive/c/backup/apps/com.google.android.apps.plus/sp/mm_utils\0.xml
Preferred POSIX equivalent is: /cygdrive/c/backup/apps/com.google.android.apps.plus/sp/mm_utils/0.xml
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
Done
Checking for apps folder...
Done
Checking if apps folder is not empty...
Done
Generating list of contents for each app...
Done
Creating individual tar archives...
Done
Creating individual adb backups...
Done
Checking for apk existence...
Warning: apk not found in android
Warning: apk not found in com.android.apps.tag

Warning: apk not found in com.sonymobile.twitter.account
Warning: apk not found in com.svox.pico
Warning: apk not found in com.vmware.mvp.enabled
There are one or more apk missing. Generating apk-missing.html
Cleaning temporal files...
Done
Backup splitting complete.

 APKファイルが無いパッケージについては、apk-missing.html というファイルが生成されていますので、そちらで確認する事ができます。