rsyncdroidを使ってAndroid端末間の音楽データをネットワーク経由でミラーリング(rsync)

投稿日時 5月 18th, 2010 by juggly 投稿カテゴリ » Androidアプリ, ブログ
コメントは受け付けていません。

私の場合、Nexus Oneを日常生活で利用しており、HT-03Aはランニング中の音楽プレイヤー、GPSトラッキングをメインに利用しているのですが、Nexus Oneにはたくさんの音楽データが保存されておりそれをHT-03Aにもコピーして使いたいと思っていたんです。しかし、いちいちUSBケーブルを挿したり、ServersManを起動してひとつづつコピペするのも面倒だったので、rsyncと言うデータの同期ツールを使って端末間のデータを同期するようにしてみました。

rsyncにはそれぞれのデバイス間の差分情報だけをコピーするインテリジェントな同期機能が搭載されているので、Nexus Oneで増えた音楽データはコマンド一発でHT-03Aと同期されます。しかし、準備が面倒です。

利用環境

rsync、rsyncdroidを利用する場合、HT-03AはCyanogenMod v5.0.7 test3、Nexus OneはCyanogenMod v5.0.6を利用します。それぞれroot権で操作できSSHが利用できる環境であればCyanogenModである必要はありません。

HT-03Aにrsyncdroidのインストール

http://code.google.com/p/rsyncdroid/ からrsyncdroid本体(rsyncdroid-0.2.apk)と、rsync本体を(rsync-3.0.6-arm-softfloat-linux-gnueabi.gz)をダウンロードし、HT=03AのマイクロSDにコピーします。

rsyncdroidは普通にインストールすれば良いのですが、rsync本体はちょっとひと手間かける必要があります。

HT-03Aにadb shellで接続し、以下のコマンドを実行してrsyncをインストールします。

mount -o rw,remount /dev/block/mtdblock3 /system
zcat /sdcard/rsync-3.0.6-arm-softfloat-linux-gnueabi.gz > /sdcard/rsync
cp -a /sdcard/rsync /system/bin/
chmod 755 /system/bin/rsync

これで準備完了です。

rsync.confの設定

それではインストールしたrsyncdroidを起動して、rsync.confの設定を行いましょう。

rsyncにはrsync.confを作成せずに直接rsyncコマンドを実行してデータの同期を行うことが出来ますが、その場合、接続したユーザのホームディレクトリ直下にディレクトリを作成しそこのデータが同期されるので、マイクロSDをホームディレクトリとするユーザを作成すれば良いのですが、後々困ることになるのでrsync.confを作成しデータを保存するディレクトリを定義するようにします。

赤枠の部分をコピーし、下の方にペーストします。その後、下の画面のように設定を変更します。

read only = no ←「yes」から「no」に変更。書き込みが出来るようにする。
[ht03a] ← rsync -azv rsync://<HT-03AのIPアドレス>/ht03a でアクセスできるようにする
path = /sdcard/Music ←Nexus Oneの/sdcard/Musicの中身をHT-03Aにコピーする際、HT-03Aのコピー先となるように指定。

後は「Start」をタップするとHT-03Aがrsyncサーバとして動作します。

音楽データの同期(コピー)

私はいつもbTunesと言う音楽プレイヤーアプリを使って音楽を聴いており、音楽ファイルは/sdcard/Musicに保存しています。これをHT-03Aにrsyncを使ってコピーしようと言うのです。

それではNexus Oneにログイン後、次のコマンドを実行してコピーします。

rsync -azv /sdcard/Music/ rsync://192.168.0.23/ht03a

すると、Nexus Oneの/sdcard/Musicの中身が、HT-03Aのrsync.confで定義した「ht03a」と言うディレクトリ(/sdcard/Music)にコピーされます。

後は、Nexus Oneに曲が増えるたびにHT-03Aでrsyncdroidを起動させ、Nexus One上で上記コマンドを実行すれば増えた分だけがコピーされます。rsyncコマンドに「–delete」オプションを付けて実行すれば、コピー元に無いファイルがコピー先でも削除されますのでそれぞれのディレクトリの内容が完全に同一となるのです。

今回紹介したAndroid端末間のデータ同期だけにrsyncが利用できるわけではなく、ServersMan@VPSなどのプライベートクラウド上のディレクトリとデータを同期したりできますので、マイクロSD内の必要なディレクトリだけをクラウド上に同期することも出来ます。今回はデータのコピーだけ紹介しましたが、もちろんコピー先端末からデータをリストアすることも出来ます。これでまた一歩Androidでのバックアップ・リストア機能が強化されたと言うわけです。

まあ、面倒なのでもしかするとUSBケーブルを接続して手動でコピペした方が速いかも知れませんね。

ちなみに、今回行ったNexus One→HT-03Aのコピー速度は家庭内のWi-Fi環境(Wi-Fi g)で418KB/sしか出ませんでした。おそらくHT-03Aがボトルネックになっているはずです。