58 lines
1.2 KiB
Tcsh
58 lines
1.2 KiB
Tcsh
#!/bin/csh
|
|
|
|
## config section
|
|
set vm_dataset = "zroot/vms"
|
|
set backup_dataset = "tank/backup/bhyve"
|
|
set backup_date = `date "+%Y-%m-%d"`
|
|
|
|
# Snapshot all VMs
|
|
echo ""
|
|
echo "################# SNAPSHOT VM #################"
|
|
foreach vm (`ls /usr/vms | \
|
|
grep -v .config | \
|
|
grep -v .iso | \
|
|
grep -v .templates`)
|
|
|
|
## stopping vm
|
|
vm stop $vm
|
|
|
|
## give vm time to shut down properly
|
|
sleep 15
|
|
|
|
## snapshot vm
|
|
echo "Snapshot VM: $vm"
|
|
zfs snapshot $vm_dataset/$vm@$backup_date
|
|
echo ""
|
|
|
|
## start VM
|
|
vm start $vm
|
|
echo ""
|
|
|
|
end
|
|
|
|
# Backup all VM snapshots
|
|
echo ""
|
|
echo "################## BACKUP VM ##################"
|
|
foreach vm (`ls /usr/vms | \
|
|
grep -v .config | \
|
|
grep -v .iso | \
|
|
grep -v .templates`)
|
|
|
|
## Create ZFS dataset
|
|
echo "Creating destination dataset for $vm"
|
|
zfs create $backup_dataset/$vm-$backup_date
|
|
|
|
## Send snapshot to backup destination
|
|
echo "Backup VM: $vm"
|
|
zfs send $vm_dataset/$vm@$backup_date | zfs recv -F $backup_dataset/$vm-$backup_date
|
|
echo ""
|
|
|
|
## Delete snapshot
|
|
zfs destroy $vm_dataset/$vm@$backup_date
|
|
|
|
end
|
|
|
|
# report done
|
|
echo ""
|
|
echo "############### ALL DONE THANKS ###############"
|
|
echo "" |