summaryrefslogtreecommitdiff
path: root/kvm_tools/kvm_live_restore.sh
blob: b2d6fcbd2201a5eee51ef1c7dbeda0b89926ba52 (plain)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/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>.*</uuid>:<uuid>$UUID</uuid>:" \
# diff $SOURCE/$PREFIX.xml $TARGET/$NAME.xml

sudo -u $USER cat $SOURCE/$PREFIX.xml | 
sed "s:<name>.*</name>:<name>$NAME</name>:" |
sed "s:<source *file=.*/>:<source file='$TARGET/$NAME.img'/>:" \
    >  $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