#!/bin/bash #TODO: move helpers to another file/lib #TODO: Add sudo everywhere.. #TODO: remove --strip-components as soon as we get new backups with tar -C #TODO: check if a virbr1 is available VERSION="0.1" sudo brctl addbr virbr1 set -e if [ "$#" -ne 1 ]; then echo "Usage: $0 [config_file]" exit fi # color helpers (set on terminal only) black= red= green= yellow= blue= magenta= cyan= white= reset= if test -t 1; then black=`tput setaf 0` red=`tput setaf 1` green=`tput setaf 2` yellow=`tput setaf 3` blue=`tput setaf 4` magenta=`tput setaf 5` cyan=`tput setaf 6` white=`tput setaf 7` reset=`tput sgr0` fi # pretty printing funcs / vars cnt=0 all=5 function print_ok { echo [${green}OK$reset] } function print_cnt { printf " [${cyan}%2s${reset}/${all}${reset}] " ${1} } function print_txt { ((++cnt)) print_cnt $cnt printf "%-30s " "${1}..." } echo echo "### ${magenta}FOOL LIVE KVM RESTORE ${VERSION}${reset} ###" echo echo " Using config file: ${yellow}${1}${reset}" echo source $1 UUID=$(uuid) LOG=$TARGET/log.log echo print_txt "SED xml DEFINITION" #sed "s:.*:$UUID:" \ # diff $SOURCE/$PREFIX.xml $TARGET/$NAME.xml sudo -u $USER cat $SOURCE/$PREFIX.xml | sed "s:.*:$NAME:" | sed "s:::" \ > $TARGET/$NAME.xml print_ok print_txt "UNTAR QCOW2 IMAGE" cat $SOURCE/$PREFIX.img.tar | pv -L $LIMIT_RATE 2>/dev/null | tar -C $TARGET --strip-components=$STRIP_TAR -xSf - print_ok print_txt "RENAME QCOW2 IMAGE" sudo -u $USER mv $TARGET/*.img $TARGET/$NAME.img print_ok print_txt "DEFINE NEW KVM" sudo -u $USER sudo virsh define $TARGET/$NAME.xml > $LOG print_ok print_txt "RESTORE RUNNING KVM" sudo -u $USER sudo virsh restore $SOURCE/$PREFIX.ram --xml $TARGET/$NAME.xml > $LOG print_ok