|
昨日のカウンタ: 今日のカウンタ: |
個人的にAndroidは4.0以降じゃなきゃ使うのイヤだってことで、Icecream Sandwich端末かJelly Bean端末しか持ち歩かなくなってしまっています。ちなみに最近はGalaxy Nexus, Nexus 7, HTC EVO3D(WCDMA版)を持ち歩いてます。
Galaxy Nexus以降は、特にJelly Bean以降では、もうスマートフォンとして実用上問題ない*1と思ってるんですが、root権限取らないと端末バックアップもままならないという点はちょっと不便です。この辺、iOSデバイスでは端末買い換えた時のデータ移行も簡単なんですが。ところが、Android 4.0以降にはADB Backup/Restoreという機能が付いてます。こりゃ便利。
まぁ、端末買い換え時のほぼ完璧なデータ以降までできなくても、やっとAndroid端末情報のパソコンへのバックアップ/リストア手段をGoogleさん自身が用意してくれたのです。これを使ってある程度自動でバックアップできるといいなとの思いでRubyスクリプトを書いてみました。というか、書いてみたらsystem文ばかりでシェルスクリプトで書けよ的な内容ですが。動かしているのはMac OS Xですが、cygwinとか入ってたらWindowsでも動くかも? (試してすらいません)
ADB Backupが有効な状態でMacにAndroid端末を接続して、スクリプトを起動すると、マシン名を聞かれます。このマシン名と現在時刻でバックアップファイルをカレントディレクトリに作成します。バックアップファイルは数百MB〜数GB程度になる訳ですが、これを勝手に90MBに分割させる機能も付いてます。余計なお世話かも知れませんが、その場合は該当部分を削除して下さいませ。
#! /usr/bin/env ruby print "machine name? " mn = gets.chomp bn = mn.to_s + "-" + `date +%Y%m%d%H%M%S`.to_i.to_s fn = bn + ".ab" print "backing-up to #{fn}\n" cmd = "adb backup -f #{fn} -apk -shared -all -system" print cmd, "\n" system(cmd) print "splitting\n" system("mkdir " + bn) system("split -b 90m #{fn} #{bn}/#{fn}.") print "finishing\n" system("rm #{fn}") print "done.\n"
で、ファイルを90MB単位に分割してる理由は? っていうと、実はBox.netでオンラインにもバックアップの複写を取っておきたいからです。Box.netは50GB使えるので、めったに使わないけど大事にしておきたい大きいファイルを置いておくのに丁度いいなと思うんですが、1つのファイルが100MBまでしか同期しないという制限があるので。
どうせリストアしようと思ったら分割したファイルをcatとかで繋げればいいだけな筈ですから。
*1 Galaxy Nexus、こんなにいい端末なのに、人気が低い理由がわかんないです…