Copias de seguridad de maquinas virtuales de VMware server

Imagen de acon
0 puntos

He terminado este script para hacer copias de las maquinas virtuales a un disco de red.
Comprueba si el disco está montado y si no lo monta.
Antes de copiar cada maquina, comprueba el estado. Si está arrancada, la pausa, copia y arranca de nuevo.
Al final, manda un mail con el reporte de la copia. Esa parte no me funciona porque mi servidor de correo está en otra maquina y el comando mail intenta usar el servidor exim de la misma maquina.
Si alguien sabe como hacerlo, gracias de antemano.
Es mi primer script en linux.

#!/bin/sh
LOGFILE="bckvm`date +%y%m%d`.log"
VMPATH="/var/lib/vmware/Virtual Machines/"
#=====================================================================================
# Funcion 'backvm'. Invoca 'archiva' con parametros de cada VM
backvm()
{
# Copia maquina virtual windows 2003 server (sERPA)
archiva "Windows Server 2003 Enterprise Edition.vmx" "win2k3" "win2k3"
# Copia maquina virtual cliente windows XP
archiva "Windows XP Professional.vmx" "Windows XP Professional" "winxp"
# Copia maquina virtual Ubuntu recovery
archiva "Plantilla Ubuntu Server 64.vmx" "Plantilla Ubuntu Server 64" "ubunturecover"
# Copia maquina virtual mail (Zimbra)
archiva "Ubuntu.vmx" "mail" "mail"
}
#=====================================================================================
# Funcion 'archiva'. Pausa y copia la maquina virtual que se proporciona como parametros
# $1=> Archivo VM. $2=> Directorio VM. $3=> Nombre VM
archiva()
{
echo `date`:Iniciada copia de VM  >> /root/copias/$LOGFILE
echo Archivo de VM: $1  >> /root/copias/$LOGFILE
echo Directorio de VM: $2  >> /root/copias/$LOGFILE
echo Nombre de VM: $3  >> /root/copias/$LOGFILE
VMSTAT=$(vmware-cmd "$VMPATH$2/$1" getstate)
case $VMSTAT in
        "getstate() = on")
                /usr/bin/vmware-cmd "$VMPATH$2/$1" suspend
                echo `date`:Parando maquina virtual $2 >> /root/copias/$LOGFILE
                VMRUN="y"
                ;;
        "getstate() = off")
                echo `date`:Maquina virtual $2 no está arrancada >> /root/copias/$LOGFILE
                VMRUN="n"
                ;;
        *)
                echo `date`:Estado de la maquina virtual desconocido >> /root/copias/$LOGFILE
                VMRUN="n"
esac
/bin/tar \
        --create \
        --verbose \
        --preserve \
        --gzip \
        --ignore-failed-read \
        --file=/media/copias/"$3".tgz \
        "$VMPATH$2"/ \
        >> /root/copias/$LOGFILE
case $VMRUN in
        "y")
                /usr/bin/vmware-cmd "$VMPATH$2/$1" start
                echo `date`:Iniciando maquina virtual $2 >> /root/copias/$LOGFILE
                ;;
        "n")
                echo `date`:No se inicia maquina virtual $2 >> /root/copias/$LOGFILE
                ;;
esac
echo `date`:Finalizada copia de maquina $3 >> /root/copias/$LOGFILE
}
#=====================================================================================
echo `date`:Inicio de copia de maquinas virtuales > /root/copias/$LOGFILE
ISMOUNT=$(cat /proc/mounts|grep /media/copias)
if [ -z "${ISMOUNT}" ];
        then
                echo Montando disco de copias >> /root/copias/$LOGFILE
                mount /media/copias
                if [ $? -ge 1 ]
                        then
                                echo No se ha podido montar el disco de copias >> /root/copias/$LOGFILE
                        else
                                backvm
                fi
        else
                backvm
fi
echo `date`:Proceso finalizado >> /root/copias/$LOGFILE
# email subject
SUBJECT="Copia de seguridad de maquinas virtuales `date`"
# Email To ?
EMAIL="abtadmin@abtelectronica.com"
# Email text/message
EMAILMESSAGE="/root/copias/$LOGFILE"
# send an email using /bin/mail
/usr/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
cp /root/copias/$LOGFILE /media/copias/$LOGFILE
/bin/umount /media/copias