※実際には11/27のネタです。
■Debian Lenny/Squeezeで動作確認済みです。
※vmware playerはインストール、仮想マシンイメージ共にデフォルトであることが条件です。
スクリプトの実行ユーザ = vmware playerの仮想マシンイメージ作成者です。
各サーバで異なるマシン名を設定するルールにすると、
バックアップサーバに吸い上げた時に迷子にならなくて済みます。
■例えば「$ vim ~/vmware_rsync_bakup.sh」として、実行権限を与えて実行します。
test -d ${HOME} && export MYHOME="${HOME}"
if [ ${MYHOME} == "" ] ;then
echo "Error: Not Found Home dir = ${HOME}"
exit 1
else
echo "OK: Home dir = ${HOME}"
fi
export MYBAK="bak.vmware"
test -d "${MYHOME}/${MYBAK}" || mkdir "${MYHOME}/${MYBAK}"
if [ -d "${MYHOME}/${MYBAK}" ];then
echo "OK: Backup dir = ${MYHOME}/${MYBAK}"
else
echo "Error: Not Fround Backup dir = ${MYHOME}/${MYBAK}"
exit 1
fi
export MYDATE="$(date '+%Y%m%d_%H%M')"
if [ "${MYDATE}" == "" ];then
echo "Error: Can\'t Get date = ${MYDATE}"
exit 1
else
echo "OK: date = ${MYDATE}"
MYLOG="${MYHOME}/vmware/vmware.bak.log_${MYDATE}"
fi
for dirlist in ${MYHOME}/vmware/* ;do
test -d "$dirlist" && echo "$dirlist"
done | for baklist in `xargs`;do
TARGET=$(echo ${baklist} | sed s/'vmware'/"${MYBAK}"/)
test -d "${baklist}" && echo "${baklist} to ..." && \
test -d "${TARGET}" && echo "${TARGET} rsync backup" && \
rsync -auv --delete "${baklist}/" "${TARGET}" --log-file="${MYLOG}"
done
test -f "$MYLOG" && cat "${MYLOG}" | mail -s "${MYDATE} ${MYBAK} Report" `whoami`
unset MYDATE MYBAK MYHOME MYLOG