Compare commits
2 Commits
3a518f0946
...
ae8d56784f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae8d56784f | ||
|
|
6dfcb708af |
44
vmbackup.sh
44
vmbackup.sh
@@ -3,19 +3,31 @@
|
||||
set -e
|
||||
set -u
|
||||
|
||||
outputdir=/mnt/backups/vms
|
||||
if [ ! -d $outputdir ] ; then
|
||||
echo outputdir not mounted
|
||||
exit 41
|
||||
statusfile=/home/cig/vmbackup.status
|
||||
basedir=/mnt/backups/vms
|
||||
|
||||
_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
|
||||
|
||||
outputdir=${outputdir}/$(date -I)
|
||||
mkdir -p ${outputdir}
|
||||
outputdir=${basedir}/$(date -I)
|
||||
|
||||
if [ $# -ne 1 ] ; then
|
||||
echo "Usage: $O vm"
|
||||
echo "Stop, backup and start given vm"
|
||||
exit 42
|
||||
_exit 42
|
||||
fi
|
||||
|
||||
function checkRunning {
|
||||
@@ -26,11 +38,21 @@ function checkRunning {
|
||||
|
||||
machine=$1
|
||||
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
|
||||
sleep 60
|
||||
echo rsync -a /srv/VM/Win/roofline ${outputdir}/
|
||||
rsync --inplace -a /srv/VM/Win/roofline ${outputdir}/
|
||||
ret=$?
|
||||
vboxmanager start $machine
|
||||
exit $ret
|
||||
test $ret -eq 0 || _mail "rsync error $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
|
||||
exit 43
|
||||
_mail "vm $machine not running"
|
||||
_exit 43
|
||||
|
||||
Reference in New Issue
Block a user