diff -r a5d087334439 -r dd11d1262b6c examples/backup --- a/examples/backup Sat Jul 25 17:16:13 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -#! /bin/bash -e - -# just a simple(!) example, not intended for production use -# without supervision! - -export TMPDIR=/var/tmp -export LC_ALL=C - -SNAPSIZE=1G -DST=${1?need destination folder} -VG=`hostname` -DEV=/dev/sda1 -NICE= - -NAGIOS_NSCA=nagios.net.schlittermann.de -NAGIOS_HOST=gentoo-chemnitz/wintraken -NAGIOS_SVC=BACKUP -NAGIOS_MSG="failed ($DST)" -NAGIOS_STATUS=2 - - -now=`date +%s` -tmp=`mktemp` -snaps=`mktemp` - -send_nsca() { - /usr/lib/nagios/plugins/send_nsca \ - -H $NAGIOS_NSCA \ - -c /etc/nagios/send_nsca.cfg "$@" -} - - -_lvremove() { - local dev=$1 - local vg=${dev%/*} - local lv=${dev#*/} - - udevadm settle || true - lvremove -f "$dev" || { - dmsetup remove /dev/$vg/$lv \ - && udevadm settle \ - && dmsetup remove /dev/$vg/$lv-cow \ - && udevadm settle \ - && lvremove -f "$dev" || true - } -} - -cleanup() { - - while read lvm dev orig cleanup; do - udevadm settle - test -e "$dev" && test "$cleanup" || continue - eval $cleanup || true - done < $snaps - - rm -f $tmp $snaps - - echo "$NAGIOS_HOST:$NAGIOS_SVC:$NAGIOS_STATUS:$NAGIOS_SVC $NAGIOS_MSG" | send_nsca -d : - -} - -trap cleanup EXIT INT - -for dev in $DEV; do - if mount -o remount,ro $dev; then - echo "- $tmp - rm -fv $tmp" >>$snaps - cp -v $dev $tmp - mount -o remount,rw $dev - file -s $tmp | egrep -q "ext[234] filesystem" && e2fsck -C0 -f -y $tmp || true - imager save --now=$now -z $tmp:$dev $DST - rm -f $tmp - fi -done - - -lvs -o vg_name,lv_name,origin --noheadings $VG | while read vg lv origin; do - # LVM-name DEV-name ORIG-name (cleanup) - - orig="$vg/$lv" - if test "$origin"; then - dev="/dev/$vg/$lv" - echo "$vg/$lv $dev $dev" >>$snaps - continue - fi - snap="$vg/$lv.snap.$now" - dev="/dev/$vg/$lv.snap.$now" - lvcreate -s -L $SNAPSIZE -n "$snap" "$orig" - echo "$snap $dev /dev/$vg/$lv _lvremove $snap" >>$snaps -done - -udevadm settle - -while read snap dev name cleanup; do - test "$snap" = "-" && continue - for a in 1 2 3; do - file -s `readlink -f $dev` | egrep -q "ext[234] filesystem" && $NICE fsck -y "$dev" && break - case $? in - 32) exit;; - *) true;; - esac - done - if test $? = 0; then - $NICE imager save --now=$now -z $dev:$name $DST - case `lvs -o snap_percent --noheadings "$snap"` in - 100*) echo "****************** $snap is full!";; - esac - fi - test "$cleanup" && eval $cleanup || true -done <$snaps -date -date >/var/log/backup.done - -NAGIOS_MSG="done ($DST)" -NAGIOS_STATUS=0