4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Androidでadbを使ってスマホのバックアップ

4
Last updated at Posted at 2018-05-29

アプリの個別バックアップ

前提

  • USBでスマホとPCを接続しデバッグモードにしていること
  • adb devicesでデバイスを認識していること

結論

for buf in $(adb shell pm list packages -e -3 | cut -d':' -f2 | sed -e 's/\r//'); adb backup -f ${buf}.ab -apk -obb ${buf}

スマホ画面からパスワードを1アプリ毎に設定することで,バックアップがPC側のカレントディレクトリに作成される.

説明

有効にしているアプリのリスト(パッケージ名)を取得

adb shell pm list packages -e

出力はこんな感じ

package:ecareme.asuswebstorage
package:skype.raider
...

出力のうち「:」より右をPKGNAMEとすると,

adb backup -f FNAME -apk -obb -shared -system PKGNAME

ここでFNAMEはバックアップファイル名で省略するとbackup.abというファイル名になる.
最近のデバイスは自動で暗号化機能がONになっているためか,パスワードを設定しないとバックアップを開始してくれないので,かなり面倒くさい.

復元は

adb restore FNAME

以上をシェルスクリプト化する.
ただ,毎回パスワード入力を求められて,やっぱし恐ろしく面倒くさい.

for buf in $(adb shell pm list packages -e -3 | cut -d':' -f2 | sed -e 's/\r//'); adb backup -f ${buf}.ab -apk -obb ${buf}

Heliumはこの辺をアンドロイドアプリとして動作させることで自動入力させているのだと思われる.

内蔵ストレージのバックアップ

前提

  • 上の前提(USBでデバッグモードで接続)に加え,
  • ディレクトリをpullするだけでは,文字コード問題やパス長問題が発現するので,端末上でzip圧縮して転送する.
    端末上でのzip圧縮は,色々なアプリがあるので適当に.
    (参考までに,私はX-plore File Managerを使っている)
  • /sdcardにFILE.zipが保存されているとする.例えば/sdcard/Music→/sdcard/Music.zipなどに圧縮しておいておく.無圧縮でも良い.

結論

以下でPCの/sdcard/直下にあるzipを全て落とし,削除する.

for f in $(adb shell ls /sdcard/ | grep zip | sed -e 's/\r//g'); adb pull /sdcard/$f .
for f in $(adb shell ls /sdcard/ | grep zip | sed -e 's/\r//g'); adb shell rm /sdcard/$f
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?