Top
ETERNUS SF AdvancedCopy Manager V15.0 Operation Guide

A.2.2 Post-processing of backup

The name of a script file for post-processing of a backup is as follows.

In the case of non-cluster operation
/etc/opt/FJSVswsts/sh/OpcBackup.post
In the case of cluster operation
/etc/opt/FJSVswsts/<logic node name>/sh/OpcBackup.post

A.2.2.1 Post-processing script for backup

  1: #!/bin/sh
  2: 
  3: # AdvancedCopy Manager
  4: # Copyright FUJITSU LIMITED, 2002-2012
  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 | /bin/grep "/dev/sd"`" != "" ]
 43: then
 44:    # /dev/sd? -> sd?
 45:    dev="`echo $device | /bin/sed "s/\/dev\///"`"
 46: elif [ "`echo $device | /bin/grep "/dev/vd"`" != "" ]
 47: then
 48:    # /dev/vd? -> vd?
 49:    dev="`echo $device | /bin/sed "s/\/dev\///"`"
 50: elif [ "`echo $device | /bin/grep "/dev/FJSV"`" != "" ]
 51: then
 52:    # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s?
 53:    # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s?
 54:    dev="`echo $device | /bin/cut -d/ -f5`"
 55: elif [ "`echo $device | /bin/grep "/dev/sfdsk/"`" != "" ]
 56: then
 57:    if [ "`echo $device | /bin/grep ":"`" != ""   ]
 58:    then
 59:            devnam="`echo $device | /bin/cut -d: -f2-`"
 60:            # /dev/sfdsk/class/dsk/volume:sd? -> class_volume_sd?
 61:            dev="`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
 62:            dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
 63:            dev="`echo $dev | /bin/sed "s/:/_/"`"
 64:            device="`echo $device | /bin/cut -d: -f1`"
 65:            if [ "`echo $devnam | /bin/grep "/dev/disk/by-id/"`" != "" ]
 66:            then
 67:                    # /dev/sfdsk/class/dsk/volume:/dev/disk/by-id/<device> -> class_volume__by_id_<device>
 68:                    dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-id\//_by-id_/"`"
 69:            elif [ "`echo $devnam | /bin/grep "/dev/disk/by-path/"`" != "" ]
 70:            then
 71:                    # /dev/sfdsk/class/dsk/volume:/dev/disk/by-path/<device> -> class_volume__by_path_<device>
 72:                    dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-path\//_by-path_/"`"
 73:            fi
 74:    else
 75:            # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
 76:            dev="_gds_`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
 77:            dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
 78:    fi
 79: elif [ "`echo $device | /bin/grep "/dev/vx/dmp/"`" != "" ]
 80: then
 81:    # /dev/vx/dmp/device -> _vx_pv_device
 82:    dev="_vx_pv_`echo $device | /bin/sed "s/\/dev\/vx\/dmp\///"`"
 83: elif [ "`echo $device | /bin/grep "/dev/mapper/"`" != "" ]
 84: then
 85:    # "/dev/mapper/<device>" -> "_mapper_<device>"
 86:    dev="_mapper_`echo $device | /bin/sed "s/\/dev\/mapper\///"`"
 87: elif [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" ]
 88: then
 89:    # "/dev/disk/by-id/<device>" -> "_by-id_<device>"
 90:    dev="_by-id_`echo $device | /bin/sed "s/\/dev\/disk\/by-id\///"`"
 91: elif [ "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
 92: then
 93:    # "/dev/disk/by-path/<device>" -> "_by-path_<device>"
 94:    dev="_by-path_`echo $device | /bin/sed "s/\/dev\/disk\/by-path\///"`"
 95: else
 96:    exit 0
 97: fi
 98: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre"
 99: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype"
100: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd"
101: 
102: # Confirmation of postprocessing
103: if [ ! -r $post_file ]
104: then
105:    exit 0
106: fi
107: post="`/bin/cat $post_file`"
108: 
109: # Confirmation of FStype
110: if [ ! -r $fstype_file ]
111: then
112:    fs=""
113: else
114:    fs="`/bin/cat $fstype_file`"
115: fi
116: 
117: # No processing
118: if [ "$post" = "none" ]
119: then
120:    /bin/rm -rf $post_file 2> /dev/null
121:    /bin/rm -rf $fstype_file 2> /dev/null
122:    exit 0
123: fi
124: 
125: # mount processing
126: if [ "$post" = "mount" ]
127: then
128:    if [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" \
129:            -o "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
130:    then
131:            cdevice="/dev/`/usr/bin/readlink $device | /bin/sed "s/..\/..\///"`"
132:            Result="`/bin/df -l | /bin/grep "$cdevice " | /bin/awk 'END {print NR}'`"
133:    else
134:            Result="`/bin/df -l | /bin/grep "$device " | /bin/awk 'END {print NR}'`"
135:    fi
136:      if [ "$Result" != "1" ]
137:    then
138:            if [ ! -r $fstype_file ]
139:            then
140:                    /bin/mount $device $mount_point 2> /dev/null
141:            else
142:                    Result1="`echo $fs | /bin/awk 'END {print NR}'`"
143:                         if [ "$Result1" != "1" ]
144:                    then
145:                            /bin/mount $device $mount_point 2> /dev/null
146:                    else
147:                            /bin/mount -t $fs $device $mount_point 2> /dev/null
148:                    fi
149:            fi
150:            if [ $? != 0 ]
151:            then
152:                    retry_count=3
153:                    sleep_time=1
154:                    result_flag=1
155: 
156:                    while [ $retry_count -gt 0 ]
157:                    do
158:                            if [ ! -r $fstype_file ]
159:                            then
160:                                    /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
161:                            else
162:                                    Result1="`echo $fs | /bin/awk 'END {print NR}'`"
163:                                    if [ "$Result1" != "1" ]
164:                                    then
165:                                            /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
166:                                    else
167:                                            /bin/mount -t $fs $device $mount_point > $err_log_path/$dev.mount 2>&1
168:                                    fi
169:                            fi
170:                            if [ $? != 0 ]
171:                            then
172:                                    retry_count=`expr $retry_count - 1`
173:                                    /bin/sleep $sleep_time
174:                            else
175:                                    /bin/rm -f $err_log_path/$dev.mount
176:                                    result_flag=0
177:                                    break
178:                            fi
179:                    done
180: 
181:                    if [ $result_flag != 0 ]
182:                    then
183:                            exit 11
184:                    fi
185:            fi
186:    fi
187:    /bin/rm -rf $post_file 2> /dev/null
188:    /bin/rm -rf $fstype_file 2> /dev/null
189:    exit 0
190: fi
191: 
192: # fsck processing
193: if [ "$post" = "fsck" ]
194: then
195:    if [ -r $bd_file ]
196:    then
197:            bk_device="`/bin/cat $bd_file`"
198:            fsck_dev="`echo $bk_device `"
199:            if [ ! -r $fstype_file ]
200:            then
201:                    /sbin/fsck -c $fsck_dev > /dev/null 2>&1
202:            else
203:                    if [ "$fs" = "" ]
204:                    then
205:                            /sbin/fsck -c $fsck_dev > /dev/null 2>&1
206:                    else
207:                            if [ "$fs" = "sfxfs" ]
208:                            then
209:                                    /sbin/sfxadm $fsck_dev > /dev/null 2>&1
210:                                    /sbin/fsck -p -t $fs $fsck_dev > /dev/null 2>&1
211:                            else
212:                                    /sbin/fsck -p -t $fs $fsck_dev > /dev/null 2>&1
213:                            fi
214:                    fi
215:            fi
216:            if [ $? != 0 ]
217:            then
218:                    if [ "$fs" = "" ]
219:                    then
220:                            result="`/sbin/fsck -p $fsck_dev `"
221:                    else
222:                            result="`/sbin/fsck -p -t $fs $fsck_dev `"
223:                    fi
224:                    fsck_rc=$?
225:                    if [ $fsck_rc != 0 ] && [ $fsck_rc != 1 ]
226:                    then
227:                            echo "$result" > $err_log_path/$dev.fsck
228:                            exit 12
229:                    fi
230:            fi
231:    fi
232:    /bin/rm -rf $post_file 2> /dev/null
233:    /bin/rm -rf $fstype_file 2> /dev/null
234:    /bin/rm -rf $bd_file 2> /dev/null
235:    exit 0
236: fi
237: 
238: exit 0