PQI Air Cardを用いて中身が同期するSDカードを作った
PQI Air Card II用にrsyncをコンパイルし,起動時に自動実行するスクリプトを書いた.
目的はカーナビの音楽用SDカードをいちいち抜き差ししなくても音楽の同期をするため.
PQI Air Cardとは
PQI Air CardはFlashAirやEyeFiなどの一種で,Wifi接続し中のデータが取り出せるというSDカード製品.データ保存にmicroSDカードを使えるため容量や速度に自由度がある.
さらに,この製品は内部でLinuxが走っており,かなり自由にハックできるようになっている.
活用方法は以下が詳しい
Windows10ではSDカード内のディレクトリ構造を完全にキャッシュし,安全な取り外しをしたときにファイル一覧を書き戻す動作をするようで,telnetやftpで作ったファイルがなくなる現象があった.これを防ぐにはSDカードを安全な取り外しせずに引っこ抜くか,SDカードのつまみでロックするのがよい.
以下の作業では,deploy_20120420.zipの導入,カスタム版autorun.shを入れた状態で進める.
rsyncについて
rsyncはフォルダの同期,バックアップなどに使えるファイル転送ツール.独自のプロトコルを用いてネット経由でもファイル転送ができる.今回はこのツールでSDカードを同期する.
rsyncのコンパイル
PQI Air Card向けの実行ファイルは公開されていないので,コンパイルし実行ファイルを作る必要がある.
以下が詳しい.対象が違う以外はほとんど同じ手順でコンパイルした.
実行したコマンドを以下に示す
$ sudo apt-get install lib32z1 $ mkdir -p ~/pqi/bin $ mkdir ~/pqi/source $ cd ~/pqi $ wget https://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 $ tar xf arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 $ mv arm-2010q1 arm-dev $ export PATH=$PATH:~/pqi/arm-dev/bin $ cd ~/pqi/source $ wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz $ tar xf rsync-3.1.2.tar.gz $ cd rsync-3.1.2/ $ ./configure --prefix=$HOME/pqi/bin/rsync --host=arm-none-linux-gnueabi $ make $ make install
以上で~/pqi/bin/rsync/binに実行ファイルができているため,これをPQI Air Cardの/DCIM/122_TREK/usr/bin/にコピーする.
rsyncデーモン
rsyncをデーモンモードで起動することでrsyncプロトコルサーバとなる. 以下が詳しい.
rsync でディレクトリの同期(バックアップ) - maruko2 Note.
設定はユーザ認証オン,ポート番号変更,リードオンリーとした.
PQI Air Cardでのrsync
なぜかPQI Air Cardで記録したファイルは時間がずれる現象が起こる.おそらくタイムゾーン設定の関係.
そのため,ファイルサイズだけを見る–size-onlyオプションを使う.
また,FAT32にパーミッションがなく,パスワードをファイルで指定できないため,RSYNC_PASSWORD環境変数でパスワードを指定する.
他にネット接続待ちや確実なファイル書き出しのためのsyncを入れて実行スクリプトは以下のようになった.
#!/bin/sh until ping -c 3 www.yahoo.co.jp ; do sleep 60 done export RSYNC_PASSWORD=PASSWORD rsync -rtv --delete --size-only --port=PORTNUM rsync://userid@hostname/module_name/Music/ /mnt/sd/Music/ sync; sync; sync
最後に,autorun.shの末尾にこのスクリプトを起動するように書くことで自動で同期するようになる