[さくらVPS]centos6の環境にlxcを構築する 6 – lxcコンテナのバックアップ 2


yokohama96x96みなさんこんにちは。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)"]