| 1 | #! /bin/sh -ex |
| 2 | |
| 3 | : ${vgtag=@backup} ${vgprefix=vg-backup-} |
| 4 | : ${mntbkpdir=/mnt/bkp} |
| 5 | : ${STOREDIR=$mntbkpdir/store} ${METADIR=$mntbkpdir/meta} |
| 6 | |
| 7 | vgs=$(vgs --noheadings -oname) |
| 8 | found=nil |
| 9 | for vg in $vgs; do |
| 10 | case "$found,$vg" in |
| 11 | nil,$vgprefix*) |
| 12 | found=t |
| 13 | tag=${vg#$vgprefix} |
| 14 | ;; |
| 15 | t,$vgprefix*) |
| 16 | echo >&2 "$0: multiple backup volumes attached" |
| 17 | exit 1 |
| 18 | ;; |
| 19 | esac |
| 20 | done |
| 21 | case $found in |
| 22 | nil) echo >&2 "$0: no backup volumes attached"; exit 1 ;; |
| 23 | esac |
| 24 | vg=$vgprefix$tag |
| 25 | |
| 26 | vgchange -ay $vg |
| 27 | mount /dev/$vg/meta $METADIR |
| 28 | |
| 29 | cryptop decrypt backup <$METADIR/crypt.blob | |
| 30 | cryptsetup luksOpen --key-file=- /dev/$vg/crypt cbackup |
| 31 | mount /dev/mapper/cbackup $STOREDIR |