#!/bin/sh # # $Id: unsnap.sh,v 1.5 2008/12/12 13:35:58 cvs Exp $ # case "$1" in *.old) old="${1%/.old}" old="${old%/}" old="${old%/backups}" old="${old%/}" user=`mount -t ufs | grep "^/dev/md.*${old}/backups/saved,.*read-only" | sort --key=3 | head -1 | while read dev on mbase mode do echo "${mbase}" done` ;; *) if test ! -d "${1}" then echo "Usage: ${0##*/} /path/backup/saved," >&2 echo "Usage: ${0##*/} /path/.old" >&2 exit 64 fi user="${1}" ;; esac # # last name of path date="${user##*/}" # # first name of path base="${user%/backups/*}" # if test ! -d "${base}/backups/${date}" then echo "snapshot ${base}/backups/${date}: dir does not exist" >&2 exit 65 fi # # get the device in use nr=`mount -t ufs | grep "^/dev/md.*${base}/backups/${date}.*read-only" | while read dev on mbase mode do echo "${dev#/dev/md}" done` # if test "${nr}" -le 0 -o "${nr}" -ge 40 then echo "snapshot ${base}/backups/${date}: is not a snapshot" >&2 exit 65 fi # # umont the backup device umount "${base}/backups/${date}" # # remove directory rmdir "${base}/backups/${date}" # # detach device mdconfig -d -u "${nr}" 2>> /dev/null # # destroy snapshort data rm -f "${base}/.snap/${date}" # # eof