Chinaunix首页 | 论坛 | 博客
  • 博客访问: 547772
  • 博文数量: 32
  • 博客积分: 5359
  • 博客等级: 大校
  • 技术积分: 1535
  • 用 户 组: 普通用户
  • 注册时间: 2005-01-04 20:39
文章分类

全部博文(32)

文章存档

2011年(1)

2010年(1)

2009年(6)

2008年(24)

我的朋友

分类:

2008-04-25 08:11:04

    之所以使用管道文件,是为了节省本地存储空间,备份文件直接传到远端的存储上(这个存储被NIM MASTER使用),本地无需驻留。
    之所以不直接使用NIM MASTER备份所有LPAR的方式,原因有三:
1、存储是NAS,我们是通过NFS方式使其被NIM MASTER使用的,此时Define一个mksysb Resource,是不可能CREATE system backup image的,因为NFS过的文件系统不能再被NFS一次。
2、即使存储是SAN,对于做过mirrorvg的rootvg,恢复到其它机器或LPAR时,问题也多多。在LPAR本地做mksysb,就可以先修改/image.data,取消镜像信息。
3、NIM MASTER不能远程备份非rootvg。


cat <<'!!!' >/usr/bin/backup.ksh
#!/usr/bin/ksh
#DATE: 2008-04-16
#email:
#blog: http://blog.chinaunix.net/index.php?blogId=739   http://www.cublog.cn/u/739/
#第一部分——请根据需要改变如下环境变量
FTPUSER=zbackup
FTPPASSWD=XXXX
VLAN=`host $(hostname) |awk -F. '{print $(NF-1); exit}'`
CLIENT=`host $(hostname) | awk '{print $3"_"$1; exit}'`
TIMESTAMP=`date +"%y%m%d"`
case "$VLAN" in
 "72")
  FTPSERVER=99.1.72.231
  TARGETDIR=/uat_backup/$CLIENT
  ]
  ]
  ;;
 "73")
  FTPSERVER=99.1.73.231
  TARGETDIR=/st_backup/$CLIENT
  ]
  ]
                ;;
 *)
  exit 1
                ;;
esac
LOG=${CLIENT}_backup_${TIMESTAMP}.log
ERRLOG=${CLIENT}_backup_${TIMESTAMP}.err
FILE=${CLIENT}_rootvg_${TIMESTAMP}

#第二部分——清理使用管道文件的进程
ps -ef | awk '/backup_pipe/ && !/grep/ {system ("kill -9 "$2)}'

#第三部分——生成无镜像信息的/image.data文件
mkszfile
export IFS='\\'
while read line;do
    if [ "`echo $line |awk '{print $1}'`" = "COPIES=" ]
       then
       copys=`echo $line |awk '{print $2}'`
    fi
    echo $line |awk 'BEGIN{OFS=FS="= "}{if($1 ~ "PP$") print $1,$2/copys; else print $0}' copys=$copys
donesed '/COPIES/s/[23]/1/g' >/image.data.new
cat /image.data.new > /image.data

#第四部分——检查FTP SERVER上的文件系统是否mount,如果发现错误,发邮件给管理员
cd /tmp
>$LOG
>$ERRLOG
echo `date` check whether the FS on server is mounted or not >> $LOG
ftp -n >>$LOG 2>>$ERRLOG <open $FTPSERVER 21
user $FTPUSER $FTPPASSWD
cd $TARGETDIR
bye
!!
grep -q exist $LOG
if [ $? == 0 ]
then
 cat $LOG $ERRLOG | mail -s "`basename $0` ERROR on $CLIENT at `date +'%y-%m-%d %H:%M'`" -c "$CC" $SENDTO
 exit 2
fi

#第五部分——做mksysb备份,并FTP上传mksysb备份文件到异地
#做mksysb备份,排除文件为/etc/exclude.rootvg
PIPENAME=/backup_pipe_rootvg
ls $PIPENAME 2>/dev/null || mknod $PIPENAME p
echo `date` rootvg backup start > $LOG
mksysb -e $PIPENAME >> $LOG 2>$ERRLOG &

#FTP上传mksysb备份文件到异地
echo `date` ${FILE} ftp start >> $LOG
ftp -n >> $LOG 2>>$ERRLOG <open $FTPSERVER 21
user $FTPUSER $FTPPASSWD
bin
cd $TARGETDIR
put "|dd if=$PIPENAME" $FILE
bye
!!
echo `date` ${FILE} ftp stop >> $LOG

#第六部分——做非rootvg备份,并FTP上传savevg备份文件到异地
cd /tmp
for VGNAME in `lsvg -o | egrep -v '(rootvg|backvg)'` ; do
        #做savevg备份,排除文件为/etc/exclude.${VGNAME}
        FILE=${CLIENT}_${VGNAME}_${TIMESTAMP}
        PIPENAME=/backup_pipe_${VGNAME}
        ls $PIPENAME 2>/dev/null || mknod $PIPENAME p
        echo `date` ${VGNAME} backup start >> $LOG
        savevg -f$PIPENAME -i -e ${VGNAME} >> $LOG 2>>$ERRLOG &

        #FTP上传savevg备份文件到异地
 echo `date` ${FILE} ftp start >> $LOG
 ftp -n >> $LOG 2>>$ERRLOG <<-!!
 open $FTPSERVER 21
 user $FTPUSER $FTPPASSWD
 bin
 cd $TARGETDIR
 put "|dd if=$PIPENAME" $FILE
 bye
 !!
 echo `date` ${FILE} ftp stop >> $LOG
done

#第七部分——检查LOG,如果发现错误,发邮件给管理员
ps -ef | awk '/backup_pipe/' >>$ERRLOG
#if [ -s $ERRLOG ]
if [ `grep -vw records $ERRLOG | wc -l` -gt 0 ]
then
 cat $LOG $ERRLOG | mail -s "`basename $0` ERROR on $CLIENT at `date +'%y-%m-%d %H:%M'`" -c "$CC" $SENDTO
fi
!!!
chmod +x /usr/bin/backup.ksh

========================================================================
任何形式的转载,请写明出处:
email:
blog: http://blog.chinaunix.net/index.php?blogId=739   http://www.cublog.cn/u/739/
========================================================================

阅读(1647) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-07-22 16:35:16

今天又有变化了 mkszfile cp /image.data /image.data.new && awk '{a[$1]=$2} /COPIES=/{$1="\t"$1;$2=1} /PP=/{$1="\t"$1;$2=a["LPs="]};{print}' /image.data.new >/image.data

chinaunix网友2008-07-11 14:17:33

第三部分——生成无镜像信息的/image.data文件,可以改成现在的样子了: mkszfile cp /image.data /image.data.new && awk '{a[$1]=$2} /COPIES=/{$2=1} /PP=/{$2=a["LPs="]};{print}' /image.data.new >/image.data 详见http://www.loveunix.net/thread-86964-1-1.html的讨论。