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

A.3.2 リストア実行時の後処理

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

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

   1: #!/bin/sh
   2: 
   3: # AdvancedCopy Manager
   4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2006
   5: 
   6: #
   7: #   Postprocessing of restoration 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: 
  16: # Argument check
  17: case $# in
  18: 1)
  19:   ;;
  20: 2)
  21:   ;;
  22: *)
  23:   exit 2
  24:   ;;
  25: esac
  26: 
  27: device="`echo $1`"
  28: mount_point="`echo $2`"
  29: 
  30: # Determination of postprocessing file name
  31: 
  32: if [ "$SWSTGNODE" != "" ]
  33: then
  34: swstg_node="/`echo $SWSTGNODE`"
  35: else
  36: swstg_node=""
  37: fi
  38: 
  39: err_log_path="/var/opt/FJSVswsts"$swstg_node"/log"
  40: 
  41: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ]
  42: then
  43:   # /dev/dsk/c?t?d?s? -> c?t?d?s?
  44:   dev="`echo $device | /usr/bin/sed "s/¥/dev¥/dsk¥///"`"
  45: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ]
  46: then
  47:   # /dev/FJSVmphd/dsk/mplb?s? -> /dev/FJSVmphd/dsk/mplb?s?
  48:   # /dev/FJSVmphd/dsk/mphd?s? -> /dev/FJSVmphd/dsk/mphd?s?
  49:   dev="`echo $device | /usr/bin/cut -d/ -f5`"
  50: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ]
  51: then
  52:   if [ "`echo $device | /usr/bin/grep ":"`" != ""   ]
  53:   then
  54:       # /dev/sfdsk/class/dsk/volume:c?t?d? -> class_volume_c?t?d?
  55:       dev="`echo $device | /usr/bin/sed "s/¥/dev¥/sfdsk¥///"`"
  56:       dev="`echo $dev | /usr/bin/sed "s/¥/dsk¥//_/"`"
  57:       dev="`echo $dev | /usr/bin/sed "s/:/_/"`"
  58:       device="`echo $device | /usr/bin/cut -d: -f1`"
  59:   else
  60:       # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
  61:       dev="_gds_`echo $device | /usr/bin/sed "s/¥/dev¥/sfdsk¥///"`"
  62:       dev="`echo $dev | /usr/bin/sed "s/¥/dsk¥//_/"`"
  63:   fi
  64: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ]
  65: then
  66:   # /dev/vx/dsk/volume -> _vx_rootdg_volume
  67:   # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume
  68:   dev=_vx_"`echo $device | /usr/bin/awk -F¥/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`"
  69: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ]
  70: then
  71:   # /dev/vx/dmp/device -> _vx_pv_device
  72:   dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`"
  73: else
  74:   exit 0
  75: fi
  76: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre"
  77: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype"
  78: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd"
  79: 
  80: # Confirmation of postprocessing
  81: if [ ! -r $post_file ]
  82: then
  83:   exit 0
  84: fi
  85: post="`/usr/bin/cat $post_file`"
  86: 
  87: # Confirmation of FStype
  88: if [ ! -r $fstype_file ]
  89: then
  90:   fs=""
  91: else
  92:   fs="`/usr/bin/cat $fstype_file`"
  93: fi
  94: 
  95: # No processing
  96: if [ "$post" = "none" ]
  97: then
  98:   /usr/bin/rm -rf $post_file 2> /dev/null
  99:   /usr/bin/rm -rf $fstype_file 2> /dev/null
 100:   exit 0
 101: fi
 102: 
 103: # mount processing
 104: if [ "$post" = "mount" ]
 105: then
 106:   /usr/bin/df -l $device > /dev/null 2>&1
 107:   if [ $? != 0 ]
 108:   then
 109:       if [ ! -r $fstype_file ]
 110:       then
 111:           /usr/sbin/mount $device $mount_point 2> /dev/null
 112:       else
 113:           if [ "$fs" = "" ]
 114:           then
 115:               /usr/sbin/mount $device $mount_point 2> /dev/null
 116:           else
 117:               if [ "$fs" = "sfxfs" ]
 118:               then
 119:                   dev="`echo $device | /usr/bin/sed "s/¥/dsk¥//¥/rdsk¥//"`"
 120:                   /usr/sbin/sfxadm $dev > /dev/null 2>&1
 121:               fi
 122:               /usr/sbin/mount -F $fs $device $mount_point 2> /dev/null
 123:           fi
 124:       fi
 125:       if [ $? != 0 ]
 126:       then
 127:           retry_count=3
 128:           sleep_time=1
 129:           result_flag=1
 130: 
 131:           while [ $retry_count -gt 0 ]
 132:           do
 133:               if [ ! -r $fstype_file ]
 134:               then
 135:                   /usr/sbin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
 136:               else
 137:                   if [ "$fs" = "" ]
 138:                   then
 139:                       /usr/sbin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
 140:                   else
 141:                       if [ "$fs" = "sfxfs" ]
 142:                       then
 143:                           dev="`echo $device | /usr/bin/sed "s/¥/dsk¥//¥/rdsk¥//"`"
 144:                           /usr/sbin/sfxadm $dev > $err_log_path/$dev.sfxadm 2>&1
 145:                       fi
 146:                       /usr/sbin/mount -F $fs $device $mount_point > $err_log_path/$dev.mount 2>&1
 147:                   fi
 148:               fi
 149:               if [ $? != 0 ]
 150:               then
 151:                   retry_count=`expr $retry_count - 1`
 152:                   /usr/bin/sleep $sleep_time
 153:               else
 154:                   /usr/bin/rm -f $err_log_path/$dev.mount
 155:                   result_flag=0
 156:                   break
 157:               fi
 158:           done
 159: 
 160:           if [ $result_flag != 0 ]
 161:           then
 162:               exit 11
 163:           fi
 164:       fi
 165:   fi
 166:   /usr/bin/rm -rf $post_file 2> /dev/null
 167:   /usr/bin/rm -rf $fstype_file 2> /dev/null
 168:   exit 0
 169: fi
 170: 
 171: exit 0