summaryrefslogtreecommitdiff
path: root/kvm_tools/kvm_live_restore.sh
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-08-01 12:57:52 +0200
committerMiguel <m.i@gmx.at>2018-08-01 12:57:52 +0200
commit8eb5d639b995e85b4c69e0f77ff85064b0a50ace (patch)
treea7e7448ad6648cf0d130fabae31169a058e65993 /kvm_tools/kvm_live_restore.sh
added kvm tools and some simple scripts
Diffstat (limited to 'kvm_tools/kvm_live_restore.sh')
-rwxr-xr-xkvm_tools/kvm_live_restore.sh96
1 files changed, 96 insertions, 0 deletions
diff --git a/kvm_tools/kvm_live_restore.sh b/kvm_tools/kvm_live_restore.sh
new file mode 100755
index 0000000..b2d6fcb
--- /dev/null
+++ b/kvm_tools/kvm_live_restore.sh
@@ -0,0 +1,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
+