#!/usr/bin/bash
#set -x
#######################################################################
# movezone.sh - clonar zona
#######################################################################
DATE=`date +%d%m%y%H%M%S`
DAY=`date +%d`
HOUR=`date +%H`
MIN=`date +%M`
LOG=/var/log/scripts/movezone.log
function uso
{
echo "movezone -z {zona} -t {servidor destino}"
echo "- o -"
echo "movezone -t {servidor destino} -z {zona}"
}
function copiaconfig
{
zonecfg -z ${ZONE} export > /export/zones/backup/${ZONE}.cfg
scp /export/zones/backup/${ZONE}.cfg root@${TARGET}:/export/zones/backup 2>&1 >> ${LOG}
scp /etc/zones/${ZONE}.xml root@${TARGET}:/export/zones/backup 2>&1 >> ${LOG}
}
function borrasnaps
{
zfs destroy -r zones/${ZONE}@backup 2>&1 >> ${LOG}
ssh root@${TARGET} "zfs destroy -r zones/${ZONE}@backup" 2>&1 >> ${LOG}
}
function stopzona
{
zoneadm -z ${ZONE} halt 2>&1 >> ${LOG}
}
function snapahora
{
zfs snapshot -r zones/${ZONE}@backup 2>&1 >> ${LOG}
}
function copiazona
{
zfs send -vRp zones/${ZONE}@backup|ssh root@${TARGET} "zfs recv -vF zones/${ZONE}" 2>&1 >> ${LOG}
}
function iniciarremoto
{
ssh root@${TARGET} "zoneadm -z ${ZONE} boot" 2>&1 >> ${LOG}
ssh root@${TARGET} "/root/globalzonename.sh" 2>&1 >> ${LOG}
}
##############################
# get command line
##############################
if [ "$1" == "" ]
then
uso
exit
fi
for i in "$@"
do
case $i in
-z)
ZONE="$2"
shift
shift
;;
-t)
TARGET="$2"
shift
shift
;;
esac
done
grep ${TARGET} /etc/hosts 2>&1 > /dev/null
if [ $? -ne 0 ]
then
echo "Destino [${TARGET}] no encontrado"
exit
fi
zoneadm list -vc|grep ${ZONE} 2>&1 > /dev/null
if [ $? -ne 0 ]
then
echo "Zona [${ZONE}] no encontrada"
exit
fi
zoneadm list -v|grep running|grep ${ZONE} 2>&1 > /dev/null
if [ $? -ne 0 ]
then
echo "Zona [${ZONE}] no ejecutandose"
#exit
fi
echo "${DATE}:*** Iniciando movimiento de ${ZONE}" >> ${LOG}
copiaconfig
borrasnaps
stopzona
snapahora
copiazona
iniciarremoto
DATE=`date +%m%d%y%H%M%S`
duration=$SECONDS
durationminutes="$(($duration / 60))"
durationseconds="$(($duration % 60))"
durationmsg="${durationminutes} minutos y ${durationseconds} segundos."
echo "${durationmsg}" >> ${LOG}
echo "${DATE}:*** Terminado el movimiento de ${ZONE}" >> ${LOG}
echo "*** Terminado el movimiento de${ZONE} - ${durationmsg} ***"
#exit
No hay comentarios:
Publicar un comentario