Script Configuração bpipe para Backup de todas as Máquinas Virtuais Xen Citrix

O Bacula Community tem um ótimo plugin genérico que usa FIFO para fazer backup basicamente qualquer aplicativo sem ter primeiro fazer dump ou exportar dados no disco.
O script abaixo tem a função de gerar dinamicamente linhas de configuração bacula-dir.conf, fazer o export e backup de todas VM em execução de um host Xen.
Neste exemplo, a restauração do arquivo de exportação VM é feito para uma pasta fixa (/mnt) . Isto pode ser alterado ou até mesmo especificado um comando Xen importação para restauração automática a partir do Bacula!
Se você precisa ou quer saber mais sobre bpipe, tenho publicadas videoaulas de baixo custo com vários exemplos detalhados: URL com código de cupom.

#!/bin/bash
#
# /etc/bacula/scripts/bpipe_xen.sh
#
# Script to generate Bacula FileSet bpipe syntax configuration in order to backup
# all running Citrix Xen VM. 
#
# Autorhip: Heitor Faria (Copyleft: all rights reversed).
# Tested by: Elias Pereira
# 
# It must be called at the FileSet INCLUDE Sub-resource, used by the job that 
# backups Citrix Xen and contains a Bacula Client, like this (e.g.):
#
#    Plugin = "\|/etc/bacula/scripts/bpipe_xen.sh"
#

for UUID in $(xe vm-list power-state=running is-control-domain=false | grep uuid | cut -d: -f2- | tr -d  )
  do
    VM_NAME=$(xe vm-param-list uuid=$UUID | grep -i name-label | cut -d: -f2- | tr -d  )
    SNAP_UUID=`xe vm-snapshot uuid=$UUID new-name-label=$VM_NAME.snps`
    xe template-param-set is-a-template=false uuid=$SNAP_UUID
    echo "bpipe:/var/$VM_NAME.xva:xe vm-export vm=$SNAP_UUID filename=:dd of=/mnt/$VM_NAME.xva"
done

Para este Job pode ser uma boa ideia também ter um pós script (diretiva ClientRunAfterJob, rescurso Job do bacula-dir.conf), para apagar todos os snapshots do Xen, já que neste momento as máquinas já foram exportadas para o backup:

#!/bin/bash
#
# /etc/bacula/scripts/after_job_xen_snapshots_delete.sh
#

for i in `xe snapshot-list --minimal | sed -e 's/,/ /g'` ; 
  do 
     xe snapshot-uninstall force=true uuid=$i ; 
done

 

Disponível em: pt-brPortuguêsenEnglish (Inglês)

Deixe uma resposta