Script – Backup de VMs no XEN / XCP com Shell Script

Share Button

Esse script faz backup das VMs sem necessidade de reboot ou shutdown, permitindo um backup sem a queda do servidor.

O backup consiste em:
-Procurar cada VM pegando seu LABEL e UUID
-Criar um Snapshot
-Exportar o snapshot como uma VM .xva
-Apagar o snapshot criado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash

#Destino onde ficara guardado o backup
dir="/mnt/usb/";
#Quantidade de cópias diárias que o backup deve permanecer na unidade.
dias=5;
 
#Pegando nomes das maquinas
uuids=$(xe vm-list is-control-domain=false is-a-snapshot=false power-state=running | grep "uuid" | awk '{ print $'5'}');
labels=$(xe vm-list is-control-domain=false is-a-snapshot=false power-state=running | grep "name-label" | awk '{ print $'4' $'5' $'6' $'7' $'8' $'9' $'10'}');
qvms=$(echo "$uuids" | wc -l);
 
#Loop para backup de cada VM
for i in `seq 1 $qvms`
do
uid=$(echo $uuids | awk '{ print $'$i'}');
label=$(echo $labels | awk '{ print $'$i'}');
 
nuid=$(xe vm-snapshot uuid=$uid new-name-label=$label-backup)
xe template-param-set is-a-template=false ha-always-run=false uuid=$nuid
xe vm-export vm=$nuid filename=$dir$label-backup.xva
xe vm-uninstall uuid=$nuid force=true
 
done
 
#Apagando arquivos mais antigos que a variável (dias)
find /mnt/usb/ -ctime +$dias -name "*.xva" -exec rm -rvf {} \;

Como importar a vm?
xe vm-import filename=nome-do-arquivo.xva sr-uuid=UUDI-DE-SEU-SR

Deixe uma resposta