Compare commits
9 Commits
3a518f0946
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5edf742181 | ||
|
|
8e78938564 | ||
|
|
099ad06a81 | ||
|
|
5178dfd6e8 | ||
|
|
fb3f38d77d | ||
|
|
5be3d73987 | ||
|
|
38e12d13b2 | ||
|
|
ae8d56784f | ||
|
|
6dfcb708af |
66
vmbackup.sh
66
vmbackup.sh
@@ -2,35 +2,63 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
set -u
|
set -u
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
outputdir=/mnt/backups/vms
|
retention=2
|
||||||
if [ ! -d $outputdir ] ; then
|
statusfile=/var/run/zabbix/vmbackup.status
|
||||||
echo outputdir not mounted
|
basedir=/mnt/backups/vms
|
||||||
exit 41
|
vbm="sudo -u cig vboxmanage"
|
||||||
|
rsync="rsync"
|
||||||
|
|
||||||
|
_exit () {
|
||||||
|
logger -p local1.info "$2 $1"
|
||||||
|
echo $1 > $statusfile
|
||||||
|
exit $2
|
||||||
|
}
|
||||||
|
|
||||||
|
_mail () {
|
||||||
|
echo "$@" | mail -s "$(hostname -f) : vm backup error" root
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkRunning {
|
||||||
|
local machine=$1
|
||||||
|
$vbm list runningvms | grep -q $machine
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
function _shutdown_vm {
|
||||||
|
net rpc shutdown -I 192.168.69.250 -U tom%123Soleil2022!
|
||||||
|
sleep 30
|
||||||
|
}
|
||||||
|
|
||||||
|
mount /mnt/backups &> /dev/null || _exit "mount failed" 2
|
||||||
|
|
||||||
|
if [ ! -d $basedir ] ; then
|
||||||
|
_mail Dir $basedir not mounted
|
||||||
|
_exit "no base dir" 41
|
||||||
fi
|
fi
|
||||||
|
|
||||||
outputdir=${outputdir}/$(date -I)
|
outputdir=${basedir}/$(date -I)
|
||||||
mkdir -p ${outputdir}
|
|
||||||
|
|
||||||
if [ $# -ne 1 ] ; then
|
if [ $# -ne 1 ] ; then
|
||||||
echo "Usage: $O vm"
|
echo "Usage: $O vm"
|
||||||
echo "Stop, backup and start given vm"
|
echo "Stop, backup and start given vm"
|
||||||
exit 42
|
_exit "Usage" 42
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function checkRunning {
|
|
||||||
local machine=$1
|
|
||||||
vboxmanage list runningvms | grep -q $machine
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
|
|
||||||
machine=$1
|
machine=$1
|
||||||
if ( checkRunning $machine ) ; then
|
if ( checkRunning $machine ) ; then
|
||||||
vboxmanage controlvm $machine acpipowerbutton shutdown
|
mkdir -p ${outputdir}
|
||||||
sleep 60
|
_shutdown_vm
|
||||||
echo rsync -a /srv/VM/Win/roofline ${outputdir}/
|
$rsync --inplace --delete --delete-after -a /srv/VM/Win/roofline ${outputdir}/
|
||||||
ret=$?
|
ret=$?
|
||||||
vboxmanager start $machine
|
test $ret -eq 0 || _mail "rsync error $ret"
|
||||||
exit $ret
|
$vbm startvm $machine
|
||||||
|
test $ret -eq 0 && find ${basedir} -maxdepth 1 -type d -mtime +${retention} -exec echo rm -fr {} \;
|
||||||
|
umount /mnt/backups &> /dev/null || _mail "umount failed"
|
||||||
|
_mail "backup done with status $ret"
|
||||||
|
_exit "backup done" $ret
|
||||||
fi
|
fi
|
||||||
exit 43
|
_mail "vm $machine not running"
|
||||||
|
_exit "vm not running" 43
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user