User Tools

Site Tools


soft:burp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

soft:burp [2019/07/14 13:42] (current)
phil created
Line 1: Line 1:
 +====== Burp - backup and restore program ======
  
 +[[https://​burp.grke.org/​|BURP]] is a powerful backup and restore tool.
 +
 +===== backup lvm snapshots =====
 +
 +
 +I backup virtual machines from hypervisors using burp and lvm (thin) snapshots.
 +
 +
 +<file conf /​etc/​burp/​burp.conf>​
 +backup_script_pre=/​etc/​burp/​pre_backup.sh
 +backup_script_post=/​etc/​burp/​post_backup.sh
 +</​file>​
 +
 +**/​etc/​burp/​pre_backup.sh** and **/​etc/​burp/​post_backup.sh** are both symlinks to **/​etc/​burp/​backup_lvm.sh**
 +
 +<file bash /​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"​
 +
 +</​file>​
 +
 +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:
 +
 +<file conf /​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
 +</​file>​
 +
 +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