-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbackup_virtualbox_vms.sh
51 lines (42 loc) · 1.32 KB
/
backup_virtualbox_vms.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/local/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:$HOME/bin;
export PATH
BACKUP_DIR=/var/Virtualbox_Backup
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
if [ -z "$1" ]
then
echo "Supply name of virtual machine or ALL for all running VMs"
exit
fi
if [ "$1" = "ALL" ]
then
VMS=`VBoxManage list runningvms|awk '{FS=" "}{print $1}'|sed s/\"//g`
else
VMS=$1
fi
for VM in $VMS
do
echo $VM
mkdir $BACKUP_DIR/$VM/
CFG=`VBoxManage showvminfo $VM --machinereadable|grep CfgFile|awk '{FS="="}{print $2}'|sed s/\"//g`
echo "Copy $CFG ==> $BACKUP_DIR/$VM/"
cp "$CFG" "$BACKUP_DIR/$VM/"
VDIS=`VBoxManage showvminfo $VM --machinereadable|grep .vdi|awk '{FS="="}{print $2}'|sed s/\"//g`
echo "Make snapshot of $VM"
VBoxManage snapshot $VM take autobackup
for VDI in "$VDIS"
do
#копирование диска
echo "Copy $VDI > $BACKUP_DIR/$VM/"
cp "$VDI" "$BACKUP_DIR/$VM/"
done
echo "Delete snapshot of $VM"
VBoxManage snapshot $VM delete autobackup
echo "Create archive of $VM"
cd $BACKUP_DIR
tar cfvJ $VM-$TIMESTAMP.xz "$VM/"
rm -rf "$BACKUP_DIR/$VM/"
echo "+++++++++++++++++++++++++++++++++++++++++++++++++"
echo "DONE"
done
find $BACKUP_DIR -type f -mtime +90 -exec rm -rf {} \;