Compare commits

...

9 Commits

Author SHA1 Message Date
cig
5edf742181 log stuff to syslog / journald 2022-10-07 17:54:54 +02:00
cig
8e78938564 lower retention because of disk space 2022-10-07 17:50:41 +02:00
cig
099ad06a81 quit with message and code 2022-10-07 17:48:30 +02:00
cig
5178dfd6e8 reorganize script's functions 2022-09-16 08:06:47 +02:00
cig
fb3f38d77d seems to work when disk is not mounted and vm works 2022-09-15 22:42:16 +02:00
cig
5be3d73987 master 2022-09-15 22:24:33 +02:00
cig
38e12d13b2 remove trailing slash 2022-06-01 11:16:12 +02:00
cig
ae8d56784f amelioration script vmbackup 2022-06-01 10:39:57 +02:00
tom
6dfcb708af factorisation exit et rsync inplace 2022-06-01 09:41:10 +02:00

View File

@@ -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"
fi rsync="rsync"
outputdir=${outputdir}/$(date -I) _exit () {
mkdir -p ${outputdir} logger -p local1.info "$2 $1"
echo $1 > $statusfile
exit $2
}
if [ $# -ne 1 ] ; then _mail () {
echo "Usage: $O vm" echo "$@" | mail -s "$(hostname -f) : vm backup error" root
echo "Stop, backup and start given vm" }
exit 42
fi
function checkRunning { function checkRunning {
local machine=$1 local machine=$1
vboxmanage list runningvms | grep -q $machine $vbm list runningvms | grep -q $machine
return $? return $?
} }
machine=$1 function _shutdown_vm {
if ( checkRunning $machine ) ; then net rpc shutdown -I 192.168.69.250 -U tom%123Soleil2022!
vboxmanage controlvm $machine acpipowerbutton shutdown sleep 30
sleep 60 }
echo rsync -a /srv/VM/Win/roofline ${outputdir}/
mount /mnt/backups &> /dev/null || _exit "mount failed" 2
if [ ! -d $basedir ] ; then
_mail Dir $basedir not mounted
_exit "no base dir" 41
fi
outputdir=${basedir}/$(date -I)
if [ $# -ne 1 ] ; then
echo "Usage: $O vm"
echo "Stop, backup and start given vm"
_exit "Usage" 42
fi
machine=$1
if ( checkRunning $machine ) ; then
mkdir -p ${outputdir}
_shutdown_vm
$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
fi test $ret -eq 0 && find ${basedir} -maxdepth 1 -type d -mtime +${retention} -exec echo rm -fr {} \;
exit 43 umount /mnt/backups &> /dev/null || _mail "umount failed"
_mail "backup done with status $ret"
_exit "backup done" $ret
fi
_mail "vm $machine not running"
_exit "vm not running" 43