ページのトップに戻る
ETERNUS SFAdvancedCopy Manager 13.4 運用手引書

A.2.2 バックアップ実行時の後処理

バックアップ実行時の後処理のシェルスクリプト名は、以下のとおりです。

シェルスクリプトの内容は、以下のとおりです。

   1: #!/bin/sh
   2: 
   3: # AdvancedCopy Manager
   4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2006
   5: 
   6: #
   7: #   Postprocessing of backup processing
   8: #
   9: #     Argument: $1 Device name of transaction disk
  10: #               $2 Mount point of transaction disk
  11: #
  12: # Error number
  13: #      2: Argument error
  14: #     11: mount error
  15: #     12: fsck error
  16: 
  17: # Argument check
  18: case $# in
  19: 1)
  20:   ;;
  21: 2)
  22:   ;;
  23: *)
  24:   exit 2
  25:   ;;
  26: esac
  27: 
  28: device="`echo $1`"
  29: mount_point="`echo $2`"
  30: 
  31: # Determination of postprocessing file name
  32: 
  33: if [ "$SWSTGNODE" != "" ]
  34: then
  35: swstg_node="/`echo $SWSTGNODE`"
  36: else
  37: swstg_node=""
  38: fi
  39: 
  40: err_log_path="/var/opt/FJSVswsts"$swstg_node"/log"
  41: 
  42: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ]
  43: then
  44:   # /dev/dsk/c?t?d?s? -> c?t?d?s?
  45:   dev="`echo $device | /usr/bin/sed "s/¥/dev¥/dsk¥///"`"
  46: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ]
  47: then
  48:   # /dev/FJSVmphd/dsk/mplb?s? -> /dev/FJSVmphd/dsk/mplb?s?
  49:   # /dev/FJSVmphd/dsk/mphd?s? -> /dev/FJSVmphd/dsk/mphd?s?
  50:   dev="`echo $device | /usr/bin/cut -d/ -f5`"
  51: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ]
  52: then
  53:   if [ "`echo $device | /usr/bin/grep ":"`" != ""   ]
  54:   then
  55:       # /dev/sfdsk/class/dsk/volume:c?t?d? -> class_volume_c?t?d?
  56:       dev="`echo $device | /usr/bin/sed "s/¥/dev¥/sfdsk¥///"`"
  57:       dev="`echo $dev | /usr/bin/sed "s/¥/dsk¥//_/"`"
  58:       dev="`echo $dev | /usr/bin/sed "s/:/_/"`"
  59:       device="`echo $device | /usr/bin/cut -d: -f1`"
  60:   else
  61:       # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
  62:       dev="_gds_`echo $device | /usr/bin/sed "s/¥/dev¥/sfdsk¥///"`"
  63:       dev="`echo $dev | /usr/bin/sed "s/¥/dsk¥//_/"`"
  64:   fi
  65: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ]
  66: then
  67:   # /dev/vx/dsk/volume -> _vx_rootdg_volume
  68:   # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume
  69:   dev=_vx_"`echo $device | /usr/bin/awk -F¥/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`"
  70: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ]
  71: then
  72:   # /dev/vx/dmp/device -> _vx_pv_device
  73:   dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`"
  74: else
  75:   exit 0
  76: fi
  77: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre"
  78: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype"
  79: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd"
  80: 
  81: # Confirmation of postprocessing
  82: if [ ! -r $post_file ]
  83: then
  84:   exit 0
  85: fi
  86: post="`/usr/bin/cat $post_file`"
  87: 
  88: # Confirmation of FStype
  89: if [ ! -r $fstype_file ]
  90: then
  91:   fs=""
  92: else
  93:   fs="`/usr/bin/cat $fstype_file`"
  94: fi
  95: 
  96: # No processing
  97: if [ "$post" = "none" ]
  98: then
  99:   /usr/bin/rm -rf $post_file 2> /dev/null
 100:   /usr/bin/rm -rf $fstype_file 2> /dev/null
 101:   exit 0
 102: fi
 103: 
 104: # mount processing
 105: if [ "$post" = "mount" ]
 106: then
 107:   /usr/bin/df -l $device > /dev/null 2>&1
 108:   if [ $? != 0 ]
 109:   then
 110:       if [ ! -r $fstype_file ]
 111:       then
 112:           /usr/sbin/mount $device $mount_point 2> /dev/null
 113:       else
 114:           if [ "$fs" = "" ]
 115:           then
 116:               /usr/sbin/mount $device $mount_point 2> /dev/null
 117:           else
 118:               /usr/sbin/mount -F $fs $device $mount_point 2> /dev/null
 119:           fi
 120:       fi
 121:       if [ $? != 0 ]
 122:       then
 123:           retry_count=3
 124:           sleep_time=1
 125:           result_flag=1
 126: 
 127:           while [ $retry_count -gt 0 ]
 128:           do
 129:               if [ ! -r $fstype_file ]
 130:               then
 131:                   /usr/sbin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
 132:               else
 133:                   if [ "$fs" = "" ]
 134:                   then
 135:                       /usr/sbin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
 136:                   else
 137:                       /usr/sbin/mount -F $fs $device $mount_point > $err_log_path/$dev.mount 2>&1
 138:                   fi
 139:                                   fi
 140:               if [ $? != 0 ]
 141:               then
 142:                   retry_count=`expr $retry_count - 1`
 143:                   /usr/bin/sleep $sleep_time
 144:               else
 145:                   /usr/bin/rm -f $err_log_path/$dev.mount
 146:                   result_flag=0
 147:                   break
 148:               fi
 149:           done
 150: 
 151:           if [ $result_flag != 0 ]
 152:           then
 153:               exit 11
 154:           fi
 155:       fi
 156:   fi
 157:   /usr/bin/rm -rf $post_file 2> /dev/null
 158:   /usr/bin/rm -rf $fstype_file 2> /dev/null
 159:   exit 0
 160: fi
 161: 
 162: # fsck processing
 163: if [ "$post" = "fsck" ]
 164: then
 165:   /usr/sbin/lockfs -u $mount_point > /dev/null 2>&1
 166:   if [ -r $bd_file ]
 167:   then
 168:       bk_device="`/usr/bin/cat $bd_file`"
 169:       fsck_dev="`echo $bk_device | /usr/bin/sed "s/¥/dsk¥//¥/rdsk¥//"`"
 170:       if [ ! -r $fstype_file ]
 171:       then
 172:           /usr/sbin/fsck -m $fsck_dev > /dev/null 2>&1
 173:       else
 174:           if [ "$fs" = "" ]
 175:           then
 176:               /usr/sbin/fsck -m $fsck_dev > /dev/null 2>&1
 177:           else
 178:               if [ "$fs" = "sfxfs" ]
 179:               then
 180:                   /usr/sbin/sfxadm $fsck_dev > /dev/null 2>&1
 181:                   /usr/sbin/fsck -y -F $fs -o p,log $fsck_dev > /dev/null 2>&1
 182:               else
 183:                   /usr/sbin/fsck -m -F $fs $fsck_dev > /dev/null 2>&1
 184:               fi
 185:           fi
 186:       fi
 187:       if [ $? != 0 ]
 188:       then
 189:           if [ "$fs" = "" ]
 190:           then
 191:               result="`/usr/sbin/fsck -n $fsck_dev |/usr/bin/grep ¥?`"
 192:           else
 193:               result="`/usr/sbin/fsck -n -F $fs $fsck_dev |/usr/bin/grep ¥?`"
 194:           fi
 195:           if [ "$result" = "FILE SYSTEM STATE IN SUPERBLOCK IS WRONG; FIX?  no" ]
 196:           then
 197:               if [ "$fs" = "" ]
 198:               then
 199:                   /usr/sbin/fsck -y $fsck_dev > $err_log_path/$dev.fsck 2>&1
 200:               else
 201:                   /usr/sbin/fsck -y -F $fs $fsck_dev > $err_log_path/$dev.fsck 2>&1
 202:               fi
 203:               if [ $? != 0 ]
 204:               then
 205:                   exit 12
 206:               else
 207:                   /usr/bin/rm -f $err_log_path/$dev.fsck
 208:               fi
 209:           else
 210:               echo "$result" > $err_log_path/$dev.fsck 2>&1
 211:               exit 12
 212:           fi
 213:       fi
 214:   fi
 215:   /usr/bin/rm -rf $post_file 2> /dev/null
 216:   /usr/bin/rm -rf $fstype_file 2> /dev/null
 217:   /usr/bin/rm -rf $bd_file 2> /dev/null
 218:   exit 0
 219: fi
 220: 
 221: exit 0