ページの先頭行へ戻る
ETERNUS SF AdvancedCopy Manager 14.2 運用手引書

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

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

リストア時の後処理シェルスクリプト

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