みなさんこんにちは。lxc、楽しいですねー。しかしきちんとバックアップが取れていないと悲しいですねー・・・というわけで、こちらのエントリでlxcコンテナのバックアップスクリプトを公開したのですが、手動でスクリプトを叩くと同期が正常終了するのに、cronから実行するとうまく同期できないバグがありました。。。
cron経由で同期がうまくいかないので、sudoの設定かなーとか疑ってみたのですが、どうもコンテナのリストを取得するところで、LXCMAINTEが期待どおりに動いてくれていないみたいでした。そこで、コンテナのリスト取得は同期元のディレクトリがあるかどうかのif文で判定するようにしたら、あっさり解決。ソースはこちらです。
#!/bin/bash LANG=C set -e LXCDIR=/var/lib/lxc BACKUPDIR=${HOME}/BACKUP LOGDIR=${HOME}/logs [ ! -d ${LOGDIR} ] && mkdir -p ${LOGDIR} for A in vm{0..9} do if [ -d ${LXCDIR}/${A} ]; then echo "################ $A $(date '+%Y/%m/%d %H:%M:%S') BACKUP ###############" [ ! -d ${BACKUPDIR}/${A} ] && mkdir -p ${BACKUPDIR}/${A} for B in home etc do sudo rsync -av --delete ${LXCDIR}/${A}/rootfs/${B} ${BACKUPDIR}/${A} done for C in var/log do sudo rsync -av --delete ${LXCDIR}/${A}/rootfs/${C} ${BACKUPDIR}/${A}/var done echo fi done >>${LOGDIR}/$(basename $0)_$(date +%Y%m%d).log
手動でもcron経由でもこちらを実行したら、きちんと同期が取れるようになりました。。。 (´・_・`) つらい
[amazonjs asin="4798031275" locale="JP" title="はじめてのCentOS6 Linuxサーバ構築編 (TECHNICAL MASTER)"]