#!/bin/sh

#########
# snap_back.sh 
#########

# xntpd causes "snapshot error: File system could not be write locked" for /usr
# http://www.netsys.com/cgi-bin/display_article.cgi?1176
/etc/init.d/xntpd stop


debug=0

###########################
# make snapshots
###########################

for i in / /var /usr /home

do
######### paths

mount_point=/fssnap_mnt/$i
backup_point=/backup/$i
snap_file=/export/home/snap_file`echo $i | sed -e 's/\//_/g'`.$$
log_addr=okada@opaopa.org

#########

mkdir -p $mount_point
mkdir -p $backup_point

#########
# alredy mounted?
#########
umount $mount_point > /dev/null 2>&1
res=$?
if [ $res = "0" ]; then
	echo "already mounted..."
fi

#########
# already fsnnaped?
#########
fssnap -d $i > /dev/null 2>&1
res=$?
if [ $res = "0" ]; then
	echo "already fssnaped..."
fi


#########
# fssnap
#########
dev=`fssnap -F ufs -o bs=$snap_file $i`
res=$?
if [ $res != "0" ]; then
	echo "cannot fssnap -F ufs -o bs=$snap_file $i"
	exit 1;
fi

	if [ "$debug" = 1 ]; then
		/usr/lib/fs/ufs/fssnap -i $i
	fi


#########
# mount
#########
mount -F ufs -o ro $dev $mount_point
res=$?
if [ $res != "0" ]; then
	echo "cannot mount -F ufs -o ro $dev $mount_point"
	exit 1;
fi

#
done

###########################
# backup
###########################

#########
# rsync
#########
log_file=/tmp/rsync.log$$
#rsync -avtopg --delete --force --ignore-errors $mount_point/ $backup_point/ > $log_file 2>&1
rsync -avtopg --delete --force --ignore-errors /fssnap_mnt/ /backup/ > $log_file 2>&1

mailx -s "sushi backup" $log_addr < $log_file

rm $log_file


###########################
# remove snapshot
###########################
for i in / /var /usr /home

do
######### paths
mount_point=/fssnap_mnt/$i
backup_point=/backup/$i
snap_file=/export/home/snap_file`echo $i | sed -e 's/\//_/g'`.$$

#########
# umount, fssnap -d 
#########
umount $mount_point > /dev/null 2>&1
fssnap -d $i > /dev/null 2>&1
rm $snap_file

done

/etc/init.d/xntpd start


exit 0


