ページの先頭行へ戻る
ETERNUS SF AdvancedCopy Manager 14.2 運用手引書テープバックアップ連携編

A.4.1 Solarisのテープコピー実行時の前処理

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

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

  1: #!/bin/sh
  2: 
  3: # AdvancedCopy Manager
  4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2005-2006
  5: 
  6: #
  7: #   Preprocessing of tape copy processing
  8: #
  9: #       Argument: $1 Device name of backup disk
 10: #                 $2 Reserve
 11: #
 12: #    Error number
 13: #         2: Argument error
 14: #        10: umount error
 15: 
 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: 
 30: # Determination 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:     # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
 53:     dev="_gds_`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`"
 54:     dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`"
 55: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ]
 56: then
 57:     # /dev/vx/dsk/volume -> _vx_rootdg_volume
 58:     # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume
 59:     dev=_vx_"`echo $device | /usr/bin/awk -F\/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`"
 60: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ]
 61: then
 62:     # /dev/vx/dmp/device -> _vx_pv_device
 63:     dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`"
 64: else
 65:     exit 0
 66: fi
 67: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre"
 68: 
 69: # Device unmount process.
 70: #
 71: cur_mount_point=`/usr/sbin/mount | grep "$device " | cut -f1 -d' '`
 72: if [ "$cur_mount_point" != "" ]
 73: then
 74:     /usr/sbin/umount $cur_mount_point 2>/dev/null
 75:     if [ $? != 0 ]
 76:     then
 77:         retry_count=3
 78:         sleep_time=1
 79:         result_flag=1
 80: 
 81:         while [ $retry_count -gt 0 ]
 82:         do
 83:             /usr/sbin/umount $cur_mount_point > $err_log_path/$dev.umount 2>&1
 84:             if [ $? != 0 ]
 85:             then
 86:                 retry_count=`expr $retry_count - 1`
 87:                 /usr/bin/sleep $sleep_time
 88:             else
 89:                 /usr/bin/rm -f $err_log_path/$dev.umount
 90:                 result_flag=0
 91:                 break
 92:             fi
 93:         done
 94: 
 95:         if [ $result_flag != 0 ]
 96:         then
 97:             /usr/sbin/fuser -cu $cur_mount_point> $err_log_path/$dev.fuser 2>&1 
 98:             /usr/bin/ps -ef > $err_log_path/$dev.ps 2>&1 
 99: 
100:             exit 10
101:         fi
102:     fi
103:     echo "mount" > $post_file
104: 
105: # When device was not mounted
106: #
107: else
108:     echo "none" > $post_file
109: fi
110: exit 0