hakeの日記

Windows環境でプログラミングの勉強をしています。

automailによる定期バックアップ

シェルスクリプトをQTアラムーチョのように自動で実行できるアプリケーションを探していたところ、automailを発見。本来はメールの自動送受信を定期的に実行させるアプリだが、メールの送受信部分をシェルスクリプトで行っている為、他のスクリプトの実行も可能。


メールを送受信させるスクリプトの実体は/home/QtPalmtop/bin/automailである、このスクリプト

  • メール(qtmail)の起動
  • 送受信動作(自動ネット接続)
  • ネット切断

とQTアラムーチョのメール自動受信をほぼ同じことを行っている。-sオプションによりネット切断後の自動電源断(サスペンド)機能もあるが、試したところSL-C3000の蓋を閉じていると上手く機能しないようだ。ザウルス本体にオートパワーオフ機能を使用してほうが安全のようだ。


メールの自動受信を設定すると、/var/spool/at/1110222000.333といったスクリプトファイルが登録される。「1110222000」の部分は次回実行時刻を1970年からの秒数で表した数字であり、拡張子の「.333」は固定だ。登録されたファイルはザウルスのat(atd?)という機能で指定時間になると自動実行される。

#!/bin/sh
#qat 2005/03/08-04:00 1440 "/home/QtPalmtop/bin/automail"
rm $0
su zaurus -c "/home/QtPalmtop/bin/automail"
export TZ=Asia/Tokyo
/home/QtPalmtop/bin/qat 2005/03/09-04:00 1440 "/home/QtPalmtop/bin/automail"

実行される内容は以下

  • 登録されている自分自身の削除
  • スクリプトautomailの実行(メールを起動し送受信)
  • 次回実行の登録


注意
登録されるファイルの拡張子が「.333」と固定であるため、複数のスクリプトを登録する場合は注意が必要となる。例えば毎時0分に実行するスクリプトと毎時0分および30分に実行するスクリプトを登録した場合、次回の0分の登録ファイル名が同一になり片方がもう一方を上書きしてしまう。これを避けるため、一方を毎時0分に実行としたら他方を毎時10分および40分に実行といったように実行時間が重ならないようにする必要がある。



PIMデータの自動バックアップ
SL-C3000にも標準でバックアップ機能がついているが、FlashやHDD2エリア全てのバックアップを行うためサイズが数十MBの大きさになってしまう。このようなバックアップは設定を変更した場合や週一回程度行えば良く、日々のバックアップはPIMデータのみ行えば良いという考えで、PIMデータバックアップ用スクリプトを作成し、/home/zaurus/bin/backup.shとする。chmod a+xを忘れずに。

#!/bin/sh
export LD_LIBRARY_PATH=/home/QtPalmtop/lib
export QPEDIR=/home/QtPalmtop
export QPEGROUP=qpe
export QPEUSER=zaurus
export QTDIR=/home/QtPalmtop

export TZ=Asia/Tokyo
BACKFILE=/home/zaurus/Documents/backup/`date +%y%m%d`
DTMFILES=/home/zaurus/Applications/dtm/*
CFDIR=/mnt/cf/backup/
SDDIR=/mnt/card/backup/

tar cvf ${BACKFILE}.tar $DTMFILES
gzip ${BACKFILE}.tar

if [ -e $CFDIR ]; then
   cp -p ${BACKFILE}.tar.gz $CFDIR
fi
if [ -e $SDDIR ]; then
   cp -p ${BACKFILE}.tar.gz $SDDIR
fi
  • 先頭のexport行はスクリプトautomailの内容をそのまま継承、多分QTアプリの実行以外では必要ないと思う
  • バックアップファイル名は日付(yymmdd)とし、/home/zaurus/Documents/backup/に作成
  • バックアップ対象はPIMデータ(/home/zaurus/Applications/dtm/以下)、必要に応じて追加する予定
  • tarで固めて、gzipで圧縮
  • もしCFやSDカードが挿入されていてbackupフォルダが存在すれば、そちらにもコピー


このスクリプトをautomailで登録、実行時間を深夜、実行間隔を1440分(24時間)と設定すれば、毎日のPIMデータを寝ている時間に自動でバックアップさせることができる。