Amandaのテープチェックスクリプト修正
以前、Software Design 2009年04月号に掲載したAmandaの紹介記事で、テープの入れ替えをチェックするスクリプトを紹介しましたが、不具合が見つかったので修正しました。
これまではずっと「月曜日がテープ番号1、火曜日が2…金曜日が5」という風にしていて、休日を挟んでずれた時はtapelistを空回しさせていたのですが、これではバックアップデータの管理上よろしいとは言えないので、テープの番号がずれてもそのままとり続けることにしました。そして、新しい方式では「月曜日がテープ番号1、火曜日が2…金曜日が5」とは限らなくなったため、今まで使用していたスクリプトでは問題が発生しました。次のテープ番号の取得を、今日の曜日の取得に頼っていたためです。
#こんなかんじ date=`date +'%u'`
そこで、tapelistから次のテープ番号を取得する方式に変更しました。tapelistは、テープに保存されているバックアップの日付が記録されていて、一番下が最古のテープ情報、つまり次に使うテープの情報になります。ここからテープ番号だけを取得しました。
nexttapeid=`tail -1 /etc/amanda/sebone/tapelist`
nexttapeid=`printf '%d' ${nexttapeid:16:2}` # 16と2の部分はテープ番号が来るように適宜調節する
これで、テープ番号がずれてもチェックスクリプトが誤作動する事はありません(たぶん)。新しいスクリプトの全体を以下に貼り付けておきます。
work="/var/lib/amanda"
(/usr/sbin/amtape project current > /dev/null) >& $work/tmp
tapeid=`cat $work/tmp | expr "\`grep project-\`" : '.* sebone-0\([^ >]*\)'`
#date=`date +'%u'`
nexttapeid=`tail -1 /etc/amanda/project/tapelist`
nexttapeid=`printf '%d' ${nexttapeid:16:2}` # 16と2の部分はテープ番号が来るように適宜調節する
if [ $tapeid -ne $nexttapeid ];
then
echo -e "バックアップテープをproject-$nexttapeidに入れ替えて
ください。\n--------------------\n現在のテープ= project-$tapeid\n今日使用するテー
プ= project-$nexttapeid\n--------------------\n" | mail -s "[Amanda] Please change the backup tape!!"
hoge@example.com
fi
ちなみに、テープが変わってなかった場合のうちでの通知方法ですが、SDで紹介したパトライトに加えて、最近はNabaztag(他の社員の私物)も「てーぷをいれかえてください」と教えてくれます。が、発音がきれいではないので、どこか不機嫌そうに教えてくれます(笑)。

