Вы находитесь на странице: 1из 4

#!

/usr/bin/ksh
#
# Script to backup the VIO Server to an NFS mounted filesystem.
# This will backup to the NIM server given as the first parameter,
# the second parameter is either prod or qa.
#
# This need to be scheduled via crontab on the vio server, and run
# as the padmin user. Run "crontab -e padmin" on vio server.
#
# Written by Stephen Diwell - capacityreports.com
#
# If DEBUG is set, run set -x
#
[[ -n ${DEBUG} ]] && set -x
. /home/padmin/.profile
#
# Read the arguments.
#
if [[ $# -ne 2 ]]
then
print "Usage: ${0} nim_server [ prod | qa ]"
exit 10
fi
#
# Check that type is prod or qa.
#
if [[ $2 = "prod" || $2 = "qa" ]]
then
export BACKUP_HOST=$1
export TYPE=$2
else
print "Usage: ${0} nim_server [ prod | qa ]"
exit 12
fi
#
# Set the correct storage location.
#
if [[ ${TYPE} = "prod" ]]
then
NFS_DIR="/nim/mksysb/prod"
BACKUP_DIR="/home/padmin/prod"
else
NFS_DIR="/nim/mksysb/nonprod"
BACKUP_DIR="/home/padmin/nonprod"
fi
#
# Setup logging.
#
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)
TSTAMP=$(date +%m%d%H%M)
LOG_DIR=/home/padmin/logs
LOG_FILE=${LOG_DIR}/${TSTAMP}.mksysb.log
VG_DIR="/home/padmin/vgdata"

CONF_DIR="/home/padmin/configs"
# Set the ulimit for files to unlimited.
ulimit -f unlimited
HOSTNAME=$( hostname )
SCRIPT=$( print ${0##*/} )
#
# Create the directories if they do not exist.
#
[[ ! -d ${BACKUP_DIR} ]] && mkdir -p -m 775 ${BACKUP_DIR}
[[ ! -d ${LOG_DIR} ]] && mkdir -p -m 775 ${LOG_DIR}
[[ ! -d ${VG_DIR} ]] && mkdir -p -m 755 ${VG_DIR}
[[ ! -d ${CONF_DIR} ]] && mkdir -p -m 755 ${CONF_DIR}
#
# Redirect all output to the logfile.
#
exec 1>${LOG_FILE}
exec 2>&1
print "${SCRIPT}: The mksysb process is now starting."
print "${SCRIPT}: Will backup to ${BACKUP_HOST} directory ${NFS_DIR}."
#
# Tidy up the logs directory. We dont have find on vio servers.
#
for FILE in $( ls -1t ${LOG_DIR} | tail +7 )
do
rm ${LOG_DIR}/${FILE}
done
print "${SCRIPT}: Checking backup server ${BACKUP_HOST} is up."
if ! ping ${BACKUP_HOST} 4 1>/dev/null 2>&
then
print "${SCRIPT}: Backup server ${BACKUP_HOST} not up!!"
exec 2>&exec 1>&exit 100
fi
print "${SCRIPT}: Mounting the ${NFS_DIR} from ${BACKUP_HOST}."
if mount | grep -q ${NFS_DIR}
then
print "${SCRIPT}: ${NFS_DIR} already mounted!!"
else
print "${SCRIPT}: Mounting ${NFS_DIR} from ${BACKUP_HOST}."
mount ${BACKUP_HOST}:${NFS_DIR} ${BACKUP_DIR}
if [[ $? != 0 ]]
then
print "${SCRIPT}: Can not mount ${NFS_DIR} from ${BACKUP_HOST}!!
"
exec 2>&exec 1>&exit 101
fi
fi
#
# Backup all the other stuff that you will need to rebuild vio server.
#

print "${SCRIPT}: Creating local configuration files in ${CONF_DIR}."


lsmap -all
> ${CONF_DIR}/lsmap-all.txt
lsmap -net -all
> ${CONF_DIR}/lsmap-net-all.txt
netstat -state
> ${CONF_DIR}/netstat-state.txt
netstat -state -num
>> ${CONF_DIR}/netstat-state.txt
netstat -routinfo
> ${CONF_DIR}/netstat-routinfo.txt
hostmap -ls
> ${CONF_DIR}/hostmap-ls.txt
cfgnamesrv -ls
> ${CONF_DIR}/cfgnamesrv-ls.txt
viosecure -firewall view
> ${CONF_DIR}/viosecure-firewall.txt
lsuser ALL
> ${CONF_DIR}/lsuser-all.txt
lspv
> ${CONF_DIR}/lspv.txt
lspv -size
> ${CONF_DIR}/lspv-size.txt
lspv | grep -v "PVID" | while read DISK REST
do
lspv -lv ${DISK}
>> ${CONF_DIR}/lspv-lv.txt
done
lsvg | while read VG
do
lsvg -pv ${VG}
>> ${CONF_DIR}/lsvg-pv.txt
lsvg -lv ${VG}
>> ${CONF_DIR}/lsvg-lv.txt
done
lsdev -type adapter | grep "^ent" | while read ETHERNET REST
do
INTERFACE=$( print en${ETHERNET##*t} )
lsdev -dev ${ETHERNET} -attr
> ${CONF_DIR}/lsdev-${ETHERNET}.txt
lsdev -dev ${INTERFACE} -attr > ${CONF_DIR}/lsdev-${INTERFACE}.txt
done
#
# Save the volume group structures.
#
for VG in $( lsvg | grep -v rootvg )
do
print "${SCRIPT}: Starting savevgstruct for ${VG}."
savevgstruct ${VG}
cp -r /tmp/vgdata/${VG} ${VG_DIR}
done
print "${SCRIPT}: Starting the mksysb.\n"
backupios -file ${BACKUP_DIR}/${HOSTNAME}.mksysb -mksysb
ERROR_LEVEL=$?
print "${SCRIPT}: Unmounting the ${NFS_DIR} from ${BACKUP_HOST}."
unmount ${BACKUP_DIR}
if [[ $? != 0 ]]
then
print "${SCRIPT}: Can not unmount ${BACKUP_DIR}!!"
exec 2>&exec 1>&exit 102
fi
case ${ERROR_LEVEL} in
0)
print "${SCRIPT}: The mksysb completed succesfully."
exec 2>&exec 1>&exit 0
;;
*)
print "${SCRIPT}: The mksysb completed failed."

exec 2>&exec 1>&exit 99


;;
esac
exec 2>&exec 1>&exit 0

Вам также может понравиться