Bom dia, tenho dois servidores Xenserver 6.5 e um script de backup automático que consegui na internet e adaptei para minha rede, funciona bem faz o snapshot de todas as maquinas ligadas depois converte em .xva. Tudo agendado no crontab..
segue o script...
#!/bin/bash
# Script para backup a quente das vm's do XenServer
# E-tab Tecnologia - marcelo.leaes@e-tab.com.br
# O funcionamento do script é simples. Ele cria um snapshot, converte para template e remove o snapshot
# O envio de emails depende do SendEmail baixe de
http://caspian.dotconf.net/menu/Software/SendEmail/
# Jamais rode este script antes de testar seu funcionamento em um host de homologação antes ;)
# Modificado em 01/07/2014 por Murilo Cesar da Silva
PATH=/opt/xensource/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
export PATH
BACKDATE=`date +%d-%m-%Y`
# Configurações para o envio de emails
# REMETENTE="backups@seudominio.com.br"
# ADMIN="suporte@seudominio.com.br"
# ASSUNTO="XENSERVER - Backup concluido no host $HOSTNAME"
# SMTP="smtp.seudominio.com.br"
# USUARIO="usuario.smtp@seudominio.com.br"
# SENHA="senhadomail"
# Defina aqui o diretório onde serão salvos os backups
BACKDIR=/defina-aqui-seu-diretorio-de-backup/$BACKDATE/$HOSTNAME
echo -e "Resumo das ações realizadas em $HOSTNAME \n" > /home/xen_back.mail
if [ -d $BACKDIR ]
then
echo "Diretório de backup já existe"
echo "$BACKDIR Exists" >> /home/xen_back.mail
else
echo "Diretório de backup não existe, criando agora."
echo "$BACKDIR não existe, criando agora" >> /home/xen_back.mail
mkdir -p $BACKDIR
fi
echo "Gerando lista das VMs rodando no Host"
xe vm-list power-state=running|grep name-label| grep -v "Control domain on host:" | sed 's/ name-label ( RW): //g' > /home/xen_back1
echo -e "\n Gerando lista das VMs rodando no Host" >> /home/xen_back.mail
cat /home/xen_back1 >> /home/xen_back.mail
if [ $? -eq 0 ]
then
echo -e "Listagem das VMs concluida com sucesso \n"
echo -e "Listagem das VMs concluida com sucesso \n" >> /home/xen_back.mail
else
echo -e "Ocorreu um erro ao obter listagem do Host \n"
echo -e "Ocorreu um erro ao obter listagem do Host \n" >> /home/xen_back.mail
fi
VMLIST=`cat /home/xen_back1 | wc -l`
COUNT=0
until [ $VMLIST = $COUNT ]
do
COUNT=`expr $COUNT + 1`
VM=`gawk FNR==$COUNT /home/xen_back1`
echo "Criando snapshot de $VM"
echo "Criando snapshot de $VM" >> /home/xen_back.mail
SNAPSHOT=`xe vm-snapshot vm="$VM" new-name-label="$VM"-$BACKDATE new-name-description="Snapshot Temporário" `
if [ $? -eq 0 ]
then
echo -e "Snapshot da vm $VM criado com sucesso \n"
echo -e "Snapshot da vm $VM criado com sucesso \n" >> /home/xen_back.mail
else
echo -e "Ocorreu um erro ao tentar fazer snapshot da vm $VM \n"
echo -e "Ocorreu um erro ao tentar fazer snapshot da vm $VM \n" >> /home/xen_back.mail
fi
echo "Convertendo o snapshot $SNAPSHOT da vm $VM para Template"
echo "Convertendo o snapshot $SNAPSHOT da vm $VM para Template" >> /home/xen_back.mail
xe template-param-set is-a-template=false uuid=$SNAPSHOT
if [ $? -eq 0 ]
then
echo -e "Conversão do snapshot $SNAPSHOT da vm $VM realizado com sucesso \n"
echo -e "Conversão do snapshot $SNAPSHOT da vm $VM realizado com sucesso \n" >> /home/xen_back.mail
else
echo -e "Ocorreu um erro ao tentar converter o snapshot $SNAPSHOT da vm $VM em um Template \n"
echo -e "Ocorreu um erro ao tentar converter o snapshot $SNAPSHOT da vm $VM em um Template \n" >> /home/xen_back.mail
fi
echo "Exportando $SNAPSHOT da vm $VM"
echo "Exportando UUID=$SNAPSHOT" >> /home/xen_back.mail
xe vm-export vm=$SNAPSHOT filename=$BACKDIR/"$VM".xva compress=true
if [ $? -eq 0 ]
then
echo -e "Processo de conversão do snapshot $SNAPSHOT e backup da vm $VM finalizado com sucesso \n"
echo -e "Processo de conversão do snapshot $SNAPSHOT e backup da vm $VM finalizado com sucesso \n" >> /home/xen_back.mail
else
echo -e "Processo de conversão do snapshot $SNAPSHOT para backup da vm $VM não pode ser realizado \n"
echo -e "Processo de conversão do snapshot $SNAPSHOT para backup da vm $VM não pode ser realizado \n" >> /home/xen_back.mail
fi
echo "Removendo $SNAPSHOT da vm $VM"
echo "Removendo UUID=$SNAPSHOT">> /home/xen_back.mail
xe vm-uninstall uuid=$SNAPSHOT force=true
if [ $? -eq 0 ]
then
echo -e "Remoção do snapshot $SNAPSHOT da vm $VM ocorreu com sucesso \n"
echo -e "Remoção do snapshot $SNAPSHOT da vm $VM ocorreu com sucesso \n" >> /home/xen_back.mail
else
echo -e "Ocorreu um erro ao tentar remover $SNAPSHOT vinculado a vm $VM \n"
echo -e "Ocorreu um erro ao tentar remover $SNAPSHOT vinculado a vm $VM \n" >> /home/xen_back.mail
fi
echo -e "\n" >> /home/xen_back.mail
done
/usr/local/bin/sendEmail -f $REMETENTE -t $ADMIN -u "$ASSUNTO" -o message-file="/tmp/xen_back.mail" -s $SMTP -xu $USUARIO -xp $SENHA
rm -rf /tmp/xen_back*
exit 0