Перейти к содержанию

Скрипт экспорта виртуальной машины в KVM/QEMU

Для автоматизации задач экспорта (например, в целях резервного копирования) можно использовать следующий скрипт.

#!/bin/bash

VM_NAME=$1
VM_READY=0
result=1

PATHTO="SET PATH HERE"

if [ "$VM_NAME" == "" ]; then
  echo "usage: $0 name"
  exit
else
  vmstate=$(virsh domstate $VM_NAME 2>/dev/null)
  if [ "$vmstate" == "running" ]; then
    echo "virtual machine $VM_NAME is running: stop it and try attempt"
  else
    if [ "$vmstate" == "" ]; then
      echo "virtual machine $VM_NAME is not defined"
    else
      VM_READY=1
    fi
  fi
fi

if [ "$VM_READY" -eq 1 ]; then
  exportpath="$VM_NAME.exported"
  if [ ! -d "$exportpath" ]; then
    mkdir $exportpath
  fi
  echo "configuration exporting"
  virsh dumpxml $VM_NAME > $exportpath/$VM_NAME.xml
  echo "disk copying"
  vmdisks=$(virsh domblklist $VM_NAME --details | awk '${PATHTO}/{print $4}')
  for disk in $vmdisks; do
    if [ -f "$disk" ]; then
      echo "$disk"
      cp $disk $exportpath
      result=$?
    else
      echo "file $disk not found: operation terminated"
      result=1
      break
    fi
  done
fi

exit $result