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
|