#!/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"