Linux. Backup виртуальных машин XenServer скриптом на bash.

До этого была написана статья по бекапу виртуальных машин XenServer, скрипт был написан на python «XenServer. Backup виртуальных машин.». Представляю вам скрипт с аналогичной функциональностью написанный на bash, скрипт получился проще и более читаемый.

#!/bin/bash
cifs="//10.10.10.10/back"     #шара с бекапами
mnt=/mnt/backup               #папка куда монтируется шара
user_cifs=back                #пользователь для подключения к шаре
passwd_cifs=passwdback        #пароль пользователя
mnt_xen=/mnt/backup/xenserver #папка, куда складываются бекапы на примонтированой шаре
max_day_live=7                #время жизни бекапов в днях
dateback=$(date +%m_%d_%y)    #дата бекапа в формате мес_день_год
 
#монтируем шару
mount -t cifs $cifs $mnt -o user=$user_cifs,password=$passwd_cifs
 
#удаляем файлы старше max_day_live дней
find $mnt_xen -type d -ctime +$max_day_live -exec rm -R {} \;
 
#создаем папку бекапа
mkdir $mnt_xen/$dateback
 
#получаем список uuid виртуальных машин
vmlist=$(xe vm-list is-control-domain=false is-a-snapshot=false | awk -F: '$1 ~ /^uuid/ {print $2}' | tr -d " ")
 
#проходимся циклом по uuid -ам 
for vm in $vmlist
  do
    #получаем имя текущей vm
    vmname=$(xe vm-list uuid=$vm | grep name-label | awk -F: '{print $2}' | tr -d " ")
 
    #делаем snapshot, записываем его uuid в переменную uuidsn
    uuidsn=$(xe vm-snapshot uuid=$vm new-name-label=snapshotname)
 
    #восстанавливаем vm из снепшота
    xe template-param-set is-a-template=false ha-always-run=false uuid=$uuidsn
 
    #экспортируем vm в файл имя_vm.xva
    xe vm-export vm=$uuidsn filename=$mnt_xen/$dateback/$vmname.xva
 
    #удаляем vm
    xe vm-uninstall uuid=$uuidsn force=true
  done
 
#размонтируем шару
umount $mnt

Осталось только добавить в cron.