ページの先頭行へ戻る
ETERNUS SF AdvancedCopy Manager 16.0 運用ガイド
FUJITSU Storage

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

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

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

  1: #!/bin/sh
  2: 
  3: # AdvancedCopy Manager
  4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2006
  5: 
  6: #
  7: #   Post-processing 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