User Tools

Site Tools


soft:burp

Burp - backup and restore program

BURP is a powerful backup and restore tool.

backup lvm snapshots

I backup virtual machines from hypervisors using burp and lvm (thin) snapshots.

/etc/burp/burp.conf
backup_script_pre=/etc/burp/pre_backup.sh
backup_script_post=/etc/burp/post_backup.sh

/etc/burp/pre_backup.sh and /etc/burp/post_backup.sh are both symlinks to /etc/burp/backup_lvm.sh

/etc/burp/backup_lvm.sh
#!/bin/sh
 
set -e
MNT=/mnt/burp
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
SUFFIX=_burp
MNT=/mnt/burp
 
snapshot() {
	vg=$2
	lv=$3
	lvsnap=${4:-$3}$SUFFIX
	mnt=$MNT/${4:-$3}
	partition=$5
 
	if test -z "$vg" -o -z "$lv"; then
		echo "bad params: $@" 1>&2
		exit 1
	fi
 
	if [ "$1" = "pre" ]; then
		mkdir -p $mnt
		thin=$(lvs $vg/$lv | tail -n 1 | awk '{ print $5 }')
		if [ -n "$thin" ]; then
			lvcreate -kn -n $lvsnap -s $vg/$lv
		else
			lvcreate -L2G -s -n $lvsnap $vg/$lv
		fi
		#lvchange -ay -K $vg/$lvsnap
		sleep 1
		if test -n "$partition"; then
			kpartx -avs /dev/mapper/$vg-$lvsnap
			dev=/dev/mapper/$vg-$lvsnap$partition
		else
			dev=/dev/mapper/$vg-$lvsnap
		fi
		mount $dev $mnt
	elif [ "$1" = "post" ]; then
		umount -f $mnt || true
		if test -n "$partition"; then
			kpartx -d /dev/mapper/$vg-$lvsnap || true
		fi
		lvremove -f $vg/$lvsnap || true
	fi
}
 
script=$(basename $0)
if [ "$script" = "pre_backup.sh" ]; then
	action=pre
elif [ "$script" = "post_backup.sh" ]; then
	action=post
else
	echo "bad invocation $0" 1>&2
	exit 1
fi
 
while IFS= read -r line; do
	echo "$line" | grep -q '^#' && continue
	test -z "$line" && continue
	snapshot $action $line
done < "$(dirname $0)/backup_lvm.conf"

The file reads its config from /etc/burp/backup_lvm.conf which list the logical volumes to be snapshoted and mounted before burp runs, for instance:

/etc/burp/backup_lvm.conf
# VGNAME LVNAME (MNT_NAME) (PARTITION)
vg0 root
vg0 vm_build build 1
vg0 vm_k2 k2 1
vg0 vm_k2_data k2_data
vg0 vm_db db 1
vg0 vm_db_postgres db_postgres
vg0 vm_db_mysql db_mysql
vg0 vm_db_logs db_logs

Then on server side, just include= mountpoint from /mnt/burp to the list of filesystems to be backup by burp.

soft/burp.txt · Last modified: 2019/07/14 13:42 by phil