Added the files
This commit is contained in:
parent
eb678fec66
commit
25e40ddaca
22
README.md
Normal file
22
README.md
Normal file
@ -0,0 +1,22 @@
|
||||
# What is it?
|
||||
This is a simple Bash script I made to automatically backup my
|
||||
virtual machines on my server. It's working really well for me,
|
||||
but there is no guarantee it will work for you.
|
||||
The script retains a set number of backups before starting to rotate.
|
||||
The backups are named with a date and timestamp and the rotation-number.
|
||||
|
||||
|
||||
# Usage
|
||||
Replace the made-up names with the name, disktype and diskfile of your
|
||||
real virtual machines.
|
||||
|
||||
`NUMBACKUPS` decides how many backups should be retained. The file *rotate.txt*
|
||||
keeps track of the rotation.
|
||||
|
||||
`VMDISKDIR` is the directory where the virtual machines are stored on the
|
||||
server, not the backup dir.
|
||||
|
||||
Also make sure to check and/or change the directories to match your
|
||||
machine.
|
||||
|
||||
Then simple put the script in a cronjob.
|
46
qemu-backup.sh
Normal file
46
qemu-backup.sh
Normal file
@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
|
||||
TODAY=`date +"%F-%s"`
|
||||
|
||||
#### Change these variables ###
|
||||
NUMBACKUPS=3
|
||||
VMS=( "orbit" "red-dwarf" "elektra" "lisa" )
|
||||
DISK=( "sda" "vda" "sda" "sda" )
|
||||
DISKNAME=("orbit-disk1.raw" "red-dwarf.qcow2" "elektra-disk1.raw" "lisa-disk1.raw")
|
||||
|
||||
BACKUPDIR="/data/vm-backups"
|
||||
VMDISKDIR="/vm"
|
||||
XMLDIR="/etc/libvirt/qemu"
|
||||
|
||||
|
||||
### Program start ###
|
||||
SCRIPTDIR=`pwd`
|
||||
|
||||
|
||||
if [ ! -e ${SCRIPTDIR}/rotate.txt ]; then
|
||||
echo 1 > ${SCRIPTDIR}/rotate.txt
|
||||
fi
|
||||
|
||||
ROTATE=`cat ${SCRIPTDIR}/rotate.txt`
|
||||
|
||||
if [ $ROTATE -gt $NUMBACKUPS ]; then
|
||||
ROTATE=1
|
||||
fi
|
||||
|
||||
for (( i = 0; i < ${#VMS[@]}; i++ ))
|
||||
do virsh snapshot-create-as --domain ${VMS[i]} --diskspec ${DISK[i]},file=${BACKUPDIR}/${VMS[i]}-snapshot.qcow2 --disk-only --atomic --no-metadata
|
||||
sleep 5
|
||||
rm -rf ${BACKUPDIR}/backup${ROTATE}-*-${DISKNAME[i]}
|
||||
cp ${VMDISKDIR}/${DISKNAME[i]} ${BACKUPDIR}/backup${ROTATE}-${TODAY}-${DISKNAME[i]}
|
||||
virsh blockcommit ${VMS[i]} ${DISK[i]} --active --verbose --pivot
|
||||
sleep 5
|
||||
rm ${BACKUPDIR}/${VMS[i]}-snapshot.qcow2
|
||||
rm -rf ${BACKUPDIR}/backup${ROTATE}-*-${VMS[i]}.xml
|
||||
cp ${XMLDIR}/${VMS[i]}.xml ${BACKUPDIR}/backup${ROTATE}-${TODAY}-${VMS[i]}.xml
|
||||
done
|
||||
|
||||
ROTATE=`echo "$ROTATE + 1" | bc`
|
||||
echo $ROTATE > ${SCRIPTDIR}/rotate.txt
|
||||
|
Loading…
x
Reference in New Issue
Block a user