Compare commits

...

2 Commits

Author SHA1 Message Date
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

@@ -3,19 +3,31 @@
set -e set -e
set -u set -u
outputdir=/mnt/backups/vms statusfile=/home/cig/vmbackup.status
if [ ! -d $outputdir ] ; then basedir=/mnt/backups/vms
echo outputdir not mounted
exit 41 _exit () {
echo $1 > $statusfile
exit $1
}
_mail () {
echo "$@" | mail -s "$(hostname -f) : vm backup error" root
}
mount /mnt/backups &> /dev/null
if [ ! -d $basedir ] ; then
_mail Dir $basedir not mounted
_exit 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 42
fi fi
function checkRunning { function checkRunning {
@@ -24,13 +36,23 @@ function checkRunning {
return $? return $?
} }
machine=$1 machine=$1
if ( checkRunning $machine ) ; then if ( checkRunning $machine ) ; then
mkdir -p ${outputdir}
cp -ar ${basedir}/current/. --target-directory=${outputdir}
mv ${basedir}/current ${basedir}/old
ln -s ${outputdir} ${basedir}/current
test $? -eq 0 || { _mail "erreur de copie" ; _exit 44 ; }
vboxmanage controlvm $machine acpipowerbutton shutdown vboxmanage controlvm $machine acpipowerbutton shutdown
sleep 60 sleep 60
echo rsync -a /srv/VM/Win/roofline ${outputdir}/ rsync --inplace -a /srv/VM/Win/roofline ${outputdir}/
ret=$? ret=$?
vboxmanager start $machine test $ret -eq 0 || _mail "rsync error $ret"
exit $ret vboxmanage startvm $machine
ln -s ${outputdir} ${basedir}/current
test $ret -eq 0 && find ${basedir} -maxdepth 1 -type d -mtime +7 -exec echo rm -fr {} \;
umount /mnt/backups &> /dev/null
_exit $ret
fi fi
exit 43 _mail "vm $machine not running"
_exit 43