#!/bin/csh -f
###########################################################
#Program: adm_rootbackup
#Purpose: To provide a way to back up the root filesystem.
#
##########################################################
setenv VFSTAB /etc/vfstab
setenv SYSMNT sysmnt
setenv USRMNT usrmnt
setenv OPTMNT optmnt
setenv VARMNT varmnt

##### UNMOUNT THE VOLS ##########
/sbin/umount /${SYSMNT}
/sbin/umount /${USRMNT}
/sbin/umount /${OPTMNT}
/sbin/umount /${VARMNT}

######## SET ROOT PARS ################
setenv ROOT_PAR `cat ${VFSTAB} | grep "^/" | grep ${SYSMNT} | cut -d "/" -f4`
setenv USR_PAR `cat ${VFSTAB} | grep "^/" | grep ${USRMNT} | cut -d "/" -f4`
setenv OPT_PAR `cat ${VFSTAB} | grep "^/" | grep ${OPTMNT} | cut -d "/" -f4`
setenv VAR_PAR `cat ${VFSTAB} | grep "^/" | grep ${VARMNT} | cut -d "/" -f4`


######## SET ROOTS ############
setenv ROOT `cat ${VFSTAB} | grep "^/" | tr "\011" "=" | grep '/=' | tr "=" "\011" | cut -d "/" -f4`
setenv USR `cat ${VFSTAB} | grep "^/" | tr "\011" "=" | grep '/usr=' | tr "=" "\011" | cut -d "/" -f4`
setenv VAR `cat ${VFSTAB} | grep "^/" | tr "\011" "=" | grep '/var=' | tr "=" "\011" | cut -d "/" -f4`
setenv OPT `cat ${VFSTAB} | grep "^/" | tr "\011" "=" | grep '/opt=' | tr "=" "\011" | cut -d "/" -f4`


####### NEWFS THE DISKS #############
/usr/sbin/newfs /dev/rdsk/${ROOT_PAR} <<EOF
y
EOF
/usr/sbin/newfs /dev/rdsk/${USR_PAR} <<EOF
y
EOF
/usr/sbin/newfs /dev/rdsk/{$VAR_PAR} <<EOF
y
EOF
/usr/sbin/newfs /dev/rdsk/${OPT_PAR} <<EOF
y
EOF

########### MOUNT THE BACKUP ROOTS #########
/sbin/mount /${SYSMNT}
/sbin/mount /${USRMNT}
/sbin/mount /${OPTMNT}
/sbin/mount /${VARMNT}


######## DUMP THE DATA ############
/usr/lib/fs/ufs/ufsdump 0fb - 10 / | (cd /${SYSMNT};/usr/lib/fs/ufs/ufsrestore -rf -)
rm /${SYSMNT}/restoresymtable
/usr/sbin/installboot /usr/platform/sun4u/lib/fs/ufs/bootblk /dev/rdsk/${ROOT_PAR}
/usr/lib/fs/ufs/ufsdump 0fb - 10 /usr | (cd /${USRMNT};/usr/lib/fs/ufs/ufsrestore -rf -)
rm /${USRMNT}/restoresymtable
/usr/lib/fs/ufs/ufsdump 0fb - 10 /opt | (cd /${OPTMNT};/usr/lib/fs/ufs/ufsrestore -rf -)
rm /${OPTMNT}/restoresymtable
/usr/lib/fs/ufs/ufsdump 0fb - 10 /var | (cd /${VARMNT};/usr/lib/fs/ufs/ufsrestore -rf -)
rm /${VARMNT}/restoresymtable


######### CHANGE THE VFSTAB #############
cp /${SYSMNT}${VFSTAB} /${SYSMNT}${VFSTAB}.old

sed "s/${ROOT}/${ROOT_PAR}/g;s/${USR}/${USR_PAR}/g;\
s/${VAR}/${VAR_PAR}/g;s/${VAR}/${VAR_PAR}/g;s/${OPT}/${OPT_PAR}/g;\
/${SYSMNT}/s/${ROOT_PAR}/${ROOT}/g;/${USRMNT}/s/${USR_PAR}/$USR/g;\
/${OPTMNT}/s/${OPT_PAR}/${OPT}/g;/${VARMNT}/s/${VAR_PAR}/${VAR}/g" /${SYSMNT}{$VFSTAB}.old > /${SYSMNT}${VFSTAB}
