以前「仮想ゲストOSバックアップ~スクリプト編~」で、ゲストOSをバックアップするためのスクリプトを稚拙ながら書きましたが、今回はそのスクリプトをESXiのcronに登録してみます。
やっていることは、
- スクリプトをパスの通ったところにリンクを張る
- cron設定ファイルに登録する
の2点です。どちらもrc.localに書き込むのですが、これは/sbinに実際のスクリプトファイルを置いても、ESXiサーバを再起動すると、デフォルトのファイルに戻されるため、せっかく置いたファイルが消えてしまいます。また、cron設定ファイルも同様に、再起動するとデフォルト設定に戻るので、どちらとも起動時に再配置・再設定するようにするわけです。では、rc.localはというと、
#! /bin/ash
export PATH=/sbin:/bin
log() {
echo "$1"
logger init "$1"
}
#execute all service retgistered in /etc/rc.local.d
if [ -d /etc/rc.local.d ]; then
for filename in `find /etc/rc.local.d/`
do
if [ -f $filename ] && [ -x $filename ]; then
log "running $filename"
$filename
fi
done
fi
### ここまでがデフォルト内容です
### 今回以下に追加しました
### スクリプト実体のシンボリックリンクを/sbinに作ります
ln -s /vmfs/volumes/datastore1/hotbackup.sh /sbin/hotbackup.sh
### cron設定ファイルに書き込み、cronデーモンを再起動します
cat<<_EOT_>>/var/spool/cron/crontabs/root
0 3 * * * /sbin/hotbackup.sh witkitty > /dev/null
_EOT_
kill -sigterm `ps|awk '/[c]rond/ {print $1;}'`
crond
cronの再設定にはヒア・ドキュメントを使うと、ファイルに直接書き込むようなイメージで仕込むことが出来るので便利です。再起動をまだしませんよ~という方は、リンク作成とcron設定ファイルを直接編集して、cronデーモンを再起動してください。
さぁ、これでESXiサーバ時間の午前3時にこのサイトのゲストOSのホットバックアップが開始されるはずです。ちなみに当方のESXiの時間は米国中部のままの設定なので、日本からだと-15時間の時差があります。よって、時間だけで言えば、いきなり日本時間の昼の12時に開始されるわけです。
注記:バックアップスクリプトのGIDチェック部分で取得GIDが正常でも直前の実行ステータスが0で帰ってくるため、バックアップ処理が中断される現象が出ました。よってスクリプト側の修正も施されていますので、過去記事を参照してくださいな。
さて、これで無事上書き自動バックアップが出来るようになりましたとさ。
あとは、リストア用のスクリプトと、バックアップローテーションをどうするかですな・・・ポツポツ合間を見つけて書いてみます。
ではでは。