みなさんこんにちは。lxc、楽しいですねー。せっかく構築したlxc、きちんとバックアップしてみませんか?サーバのバックアップはこちらのエントリーがよく参考にしていただいているようですが、ホストOSからlxcコンテナへはssh接続しなくてもアクセスできるので、もう少しシンプルにバックアップができるのです。
こちらの記事を参考にlxcをインストールすると、/var/lib/lxc/
コンテナのリストをメンテナンスしたり取得したりしてバックアップ対象を決めているので、こちらの記事に書いたシェルスクリプトがあることを前提としています。
#!/bin/bash LANG=C set -e LXCDIR=/var/lib/lxc BACKUPDIR=${HOME}/BACKUP LOGDIR=${HOME}/logs [ ! -d ${LOGDIR} ] && mkdir -p ${LOGDIR} LXCMAINTE mainte for A in $(echo $(LXCMAINTE list) | awk 'BEGIN {FS="disables"} {print $1}' | awk 'BEGIN {FS="actives"} {print $2}') do 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 done >>${LOGDIR}/$(basename $0)_$(date +%Y%m%d).log
最初に LXCMAINTE コマンドの mainte オプションで、コンテナのリストを更新しています。ここの処理で、コンテナの起動停止のステータスを最新化されます。
次に、for文の変数「A」にアクティブなコンテナのリストを代入します。実際にここのコマンドを実行してみると、vmが2台動いている場合、こうなります。
[ (っ´∀`)っ@友の会 ~]$ echo $(LXCMAINTE list) | awk 'BEGIN {FS="disables"} {print $1}' | awk 'BEGIN {FS="actives"} {print $2}' vm0 vm1
あとは、入れ子にしたfor文のループBで /home と /etc を、 ループCで /var/log をバックアップし、${HOME}/logs/YYYYMMDD.log にログを記録しています。
ね、簡単でしょ?
[amazonjs asin="4822262731" locale="JP" title="すべてわかる仮想化大全2013 (日経BPムック)"]