バックアップ実行時の後処理のシェルスクリプト名は、以下のとおりです。
クラスタ運用でない場合
/etc/opt/FJSVswsts/sh/OpcBackup.post |
クラスタ運用の場合
/etc/opt/FJSVswsts/logicalNodeName/sh/OpcBackup.post |
バックアップ時の後処理シェルスクリプト(OpcBackup.post)
Red Hat Enterprise Linux 8、Red Hat Enterprise Linux 7、またはRed Hat Enterprise Linux 6の場合
1: #!/bin/sh
2:
3: # AdvancedCopy Manager
4: # Copyright FUJITSU LIMITED 2002-2017
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: # 15: unfreeze error
17:
18: # Argument check
19: case $# in
20: 1)
21: ;;
22: 2)
23: ;;
24: *)
25: exit 2
26: ;;
27: esac
28:
29: device="`echo $1`"
30: mount_point="`echo $2`"
31:
32: # Determination of postprocessing file name
33:
34: if [ "$SWSTGNODE" != "" ]
35: then
36: swstg_node="/`echo $SWSTGNODE`"
37: else
38: swstg_node=""
39: fi
40:
41: err_log_path="/var/opt/FJSVswsts"$swstg_node"/log"
42:
43: if [ "`echo $device | /bin/grep "/dev/sd"`" != "" ]
44: then
45: # /dev/sd? -> sd?
46: dev="`echo $device | /bin/sed "s/\/dev\///"`"
47: elif [ "`echo $device | /bin/grep "/dev/vd"`" != "" ]
48: then
49: # /dev/vd? -> vd?
50: dev="`echo $device | /bin/sed "s/\/dev\///"`"
51: elif [ "`echo $device | /bin/grep "/dev/FJSV"`" != "" ]
52: then
53: # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s?
54: # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s?
55: dev="`echo $device | /bin/cut -d/ -f5`"
56: elif [ "`echo $device | /bin/grep "/dev/sfdsk/"`" != "" ]
57: then
58: if [ "`echo $device | /bin/grep ":"`" != "" ]
59: then
60: devnam="`echo $device | /bin/cut -d: -f2-`"
61: # /dev/sfdsk/class/dsk/volume:sd? -> class_volume_sd?
62: dev="`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
63: dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
64: dev="`echo $dev | /bin/sed "s/:/_/"`"
65: device="`echo $device | /bin/cut -d: -f1`"
66: if [ "`echo $devnam | /bin/grep "/dev/disk/by-id/"`" != "" ]
67: then
68: # /dev/sfdsk/class/dsk/volume:/dev/disk/by-id/<device> -> class_volume__by_id_<device>
69: dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-id\//_by-id_/"`"
70: elif [ "`echo $devnam | /bin/grep "/dev/disk/by-path/"`" != "" ]
71: then
72: # /dev/sfdsk/class/dsk/volume:/dev/disk/by-path/<device> -> class_volume__by_path_<device>
73: dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-path\//_by-path_/"`"
74: fi
75: else
76: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
77: dev="_gds_`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
78: dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
79: fi
80: elif [ "`echo $device | /bin/grep "/dev/vx/dmp/"`" != "" ]
81: then
82: # /dev/vx/dmp/device -> _vx_pv_device
83: dev="_vx_pv_`echo $device | /bin/sed "s/\/dev\/vx\/dmp\///"`"
84: elif [ "`echo $device | /bin/grep "/dev/mapper/"`" != "" ]
85: then
86: # "/dev/mapper/<device>" -> "_mapper_<device>"
87: dev="_mapper_`echo $device | /bin/sed "s/\/dev\/mapper\///"`"
88: elif [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" ]
89: then
90: # "/dev/disk/by-id/<device>" -> "_by-id_<device>"
91: dev="_by-id_`echo $device | /bin/sed "s/\/dev\/disk\/by-id\///"`"
92: elif [ "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
93: then
94: # "/dev/disk/by-path/<device>" -> "_by-path_<device>"
95: dev="_by-path_`echo $device | /bin/sed "s/\/dev\/disk\/by-path\///"`"
96: else
97: exit 0
98: fi
99: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre"
100: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype"
101: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd"
102:
103: # Confirmation of postprocessing
104: if [ ! -r $post_file ]
105: then
106: exit 0
107: fi
108: post="`/bin/cat $post_file`"
109:
110: # Confirmation of FStype
111: if [ ! -r $fstype_file ]
112: then
113: fs=""
114: else
115: fs="`/bin/cat $fstype_file`"
116: fi
117:
118: # No processing
119: if [ "$post" = "none" ]
120: then
121: /bin/rm -rf $post_file 2> /dev/null
122: /bin/rm -rf $fstype_file 2> /dev/null
123: exit 0
124: fi
125:
126: # mount processing
127: if [ "$post" = "mount" ]
128: then
129: if [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" \
130: -o "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
131: then
132: cdevice="/dev/`/usr/bin/readlink $device | /bin/sed "s/..\/..\///"`"
133: Result="`/bin/df -l | /bin/grep "$cdevice " | /bin/awk 'END {print NR}'`"
134: else
135: Result="`/bin/df -l | /bin/grep "$device " | /bin/awk 'END {print NR}'`"
136: fi
137: if [ "$Result" != "1" ]
138: then
139: if [ ! -r $fstype_file ]
140: then
141: /bin/mount $device $mount_point 2> /dev/null
142: else
143: Result1="`echo $fs | /bin/awk 'END {print NR}'`"
144: if [ "$Result1" != "1" ]
145: then
146: /bin/mount $device $mount_point 2> /dev/null
147: else
148: /bin/mount -t $fs $device $mount_point 2> /dev/null
149: fi
150: fi
151: if [ $? != 0 ]
152: then
153: retry_count=3
154: sleep_time=1
155: result_flag=1
156:
157: while [ $retry_count -gt 0 ]
158: do
159: if [ ! -r $fstype_file ]
160: then
161: /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
162: else
163: Result1="`echo $fs | /bin/awk 'END {print NR}'`"
164: if [ "$Result1" != "1" ]
165: then
166: /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
167: else
168: /bin/mount -t $fs $device $mount_point > $err_log_path/$dev.mount 2>&1
169: fi
170: fi
171: if [ $? != 0 ]
172: then
173: retry_count=`expr $retry_count - 1`
174: /bin/sleep $sleep_time
175: else
176: /bin/rm -f $err_log_path/$dev.mount
177: result_flag=0
178: break
179: fi
180: done
181:
182: if [ $result_flag != 0 ]
183: then
184: exit 11
185: fi
186: fi
187: fi
188: /bin/rm -rf $post_file 2> /dev/null
189: /bin/rm -rf $fstype_file 2> /dev/null
190: exit 0
191: fi
192:
193: # unfreeze processing
194: if [ "$post" = "fsfreeze" ]
195: then
196: result="`/sbin/fsfreeze -u $mount_point 2>&1 `"
197: if [ $? != 0 ]
198: then
199: echo "$result" > $err_log_path/$dev.fsfreeze
200: exit 15
201: fi
202: /bin/rm -rf $post_file 2> /dev/null
203: exit 0
204: fi
205:
206: # fsck processing
207: if [ "$post" = "fsck" ]
208: then
209: if [ -r $bd_file ]
210: then
211: bk_device="`/bin/cat $bd_file`"
212: fsck_dev="`echo $bk_device `"
213: if [ ! -r $fstype_file ]
214: then
215: /sbin/fsck -n $fsck_dev > /dev/null 2>&1
216: else
217: if [ "$fs" = "" ]
218: then
219: /sbin/fsck -n $fsck_dev > /dev/null 2>&1
220: else
221: if [ "$fs" = "sfxfs" ]
222: then
223: /sbin/sfxadm $fsck_dev > /dev/null 2>&1
224: /sbin/fsck -p -t $fs $fsck_dev > /dev/null 2>&1
225: else
226: /sbin/fsck -n -t $fs $fsck_dev > /dev/null 2>&1
227: fi
228: fi
229: fi
230: if [ $? != 0 ]
231: then
232: if [ "$fs" = "" ]
233: then
234: result="`/sbin/fsck -p $fsck_dev `"
235: else
236: result="`/sbin/fsck -p -t $fs $fsck_dev `"
237: fi
238: fsck_rc=$?
239: if [ $fsck_rc != 0 ] && [ $fsck_rc != 1 ]
240: then
241: echo "$result" > $err_log_path/$dev.fsck
242: exit 12
243: fi
244: fi
245: fi
246: /bin/rm -rf $post_file 2> /dev/null
247: /bin/rm -rf $fstype_file 2> /dev/null
248: /bin/rm -rf $bd_file 2> /dev/null
249: exit 0
250: fi
251:
252: exit 0SUSE Linux Enterprise Server 15またはSUSE Linux Enterprise Server 12の場合
1: #!/bin/sh
2:
3: # AdvancedCopy Manager
4: # Copyright FUJITSU LIMITED 2014
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/FJSV"`" != "" ]
47: then
48: # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s?
49: # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s?
50: dev="`echo $device | /usr/bin/cut -d/ -f5`"
51: elif [ "`echo $device | /bin/grep "/dev/sfdsk/"`" != "" ]
52: then
53: if [ "`echo $device | /bin/grep ":"`" != "" ]
54: then
55: devnam="`echo $device | /usr/bin/cut -d: -f2-`"
56: # /dev/sfdsk/class/dsk/volume:sd? -> class_volume_sd?
57: dev="`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
58: dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
59: dev="`echo $dev | /bin/sed "s/:/_/"`"
60: device="`echo $device | /usr/bin/cut -d: -f1`"
61: if [ "`echo $devnam | /bin/grep "/dev/disk/by-id/"`" != "" ]
62: then
63: # /dev/sfdsk/class/dsk/volume:/dev/disk/by-id/<device> -> class_volume__by_id_<device>
64: dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-id\//_by-id_/"`"
65: elif [ "`echo $devnam | /bin/grep "/dev/disk/by-path/"`" != "" ]
66: then
67: # /dev/sfdsk/class/dsk/volume:/dev/disk/by-path/<device> -> class_volume__by_path_<device>
68: dev="`echo $dev | /bin/sed "s/\/dev\/disk\/by-path\//_by-path_/"`"
69: fi
70: else
71: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume
72: dev="_gds_`echo $device | /bin/sed "s/\/dev\/sfdsk\///"`"
73: dev="`echo $dev | /bin/sed "s/\/dsk\//_/"`"
74: fi
75: elif [ "`echo $device | /bin/grep "/dev/vx/dmp/"`" != "" ]
76: then
77: # /dev/vx/dmp/device -> _vx_pv_device
78: dev="_vx_pv_`echo $device | /bin/sed "s/\/dev\/vx\/dmp\///"`"
79: elif [ "`echo $device | /bin/grep "/dev/mapper/"`" != "" ]
80: then
81: # "/dev/mapper/<device>" -> "_mapper_<device>"
82: dev="_mapper_`echo $device | /bin/sed "s/\/dev\/mapper\///"`"
83: elif [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" ]
84: then
85: # "/dev/disk/by-id/<device>" -> "_by-id_<device>"
86: dev="_by-id_`echo $device | /bin/sed "s/\/dev\/disk\/by-id\///"`"
87: elif [ "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
88: then
89: # "/dev/disk/by-path/<device>" -> "_by-path_<device>"
90: dev="_by-path_`echo $device | /bin/sed "s/\/dev\/disk\/by-path\///"`"
91: else
92: exit 0
93: fi
94: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre"
95: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype"
96: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd"
97:
98: # Confirmation of postprocessing
99: if [ ! -r $post_file ]
100: then
101: exit 0
102: fi
103: post="`/bin/cat $post_file`"
104:
105: # Confirmation of FStype
106: if [ ! -r $fstype_file ]
107: then
108: fs=""
109: else
110: fs="`/bin/cat $fstype_file`"
111: fi
112:
113: # No processing
114: if [ "$post" = "none" ]
115: then
116: /bin/rm -rf $post_file 2> /dev/null
117: /bin/rm -rf $fstype_file 2> /dev/null
118: exit 0
119: fi
120:
121: # mount processing
122: if [ "$post" = "mount" ]
123: then
124: if [ "`echo $device | /bin/grep "/dev/disk/by-id/"`" != "" \
125: -o "`echo $device | /bin/grep "/dev/disk/by-path/"`" != "" ]
126: then
127: cdevice="/dev/`/usr/bin/readlink $device | /bin/sed "s/..\/..\///"`"
128: Result="`/bin/df -l | /bin/grep "$cdevice " | /bin/awk 'END {print NR}'`"
129: else
130: Result="`/bin/df -l | /bin/grep "$device " | /bin/awk 'END {print NR}'`"
131: fi
132: if [ "$Result" != "1" ]
133: then
134: if [ ! -r $fstype_file ]
135: then
136: /bin/mount $device $mount_point 2> /dev/null
137: else
138: Result1="`echo $fs | /bin/awk 'END {print NR}'`"
139: if [ "$Result1" != "1" ]
140: then
141: /bin/mount $device $mount_point 2> /dev/null
142: else
143: /bin/mount -t $fs $device $mount_point 2> /dev/null
144: fi
145: fi
146: if [ $? != 0 ]
147: then
148: retry_count=3
149: sleep_time=1
150: result_flag=1
151:
152: while [ $retry_count -gt 0 ]
153: do
154: if [ ! -r $fstype_file ]
155: then
156: /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
157: else
158: Result1="`echo $fs | /bin/awk 'END {print NR}'`"
159: if [ "$Result1" != "1" ]
160: then
161: /bin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1
162: else
163: /bin/mount -t $fs $device $mount_point > $err_log_path/$dev.mount 2>&1
164: fi
165: fi
166: if [ $? != 0 ]
167: then
168: retry_count=`expr $retry_count - 1`
169: /bin/sleep $sleep_time
170: else
171: /bin/rm -f $err_log_path/$dev.mount
172: result_flag=0
173: break
174: fi
175: done
176:
177: if [ $result_flag != 0 ]
178: then
179: exit 11
180: fi
181: fi
182: fi
183: /bin/rm -rf $post_file 2> /dev/null
184: /bin/rm -rf $fstype_file 2> /dev/null
185: exit 0
186: fi
187:
188: # fsck processing
189: if [ "$post" = "fsck" ]
190: then
191: if [ -r $bd_file ]
192: then
193: bk_device="`/bin/cat $bd_file`"
194: fsck_dev="`echo $bk_device `"
195: if [ ! -r $fstype_file ]
196: then
197: /sbin/fsck -n $fsck_dev > /dev/null 2>&1
198: else
199: if [ "$fs" = "" ]
200: then
201: /sbin/fsck -n $fsck_dev > /dev/null 2>&1
202: else
203: if [ "$fs" = "sfxfs" ]
204: then
205: /sbin/sfxadm $fsck_dev > /dev/null 2>&1
206: /sbin/fsck -p -t $fs $fsck_dev > /dev/null 2>&1
207: else
208: /sbin/fsck -n -t $fs $fsck_dev > /dev/null 2>&1
209: fi
210: fi
211: fi
212: if [ $? != 0 ]
213: then
214: if [ "$fs" = "" ]
215: then
216: result="`/sbin/fsck -p $fsck_dev `"
217: else
218: result="`/sbin/fsck -p -t $fs $fsck_dev `"
219: fi
220: fsck_rc=$?
221: if [ $fsck_rc != 0 ] && [ $fsck_rc != 1 ]
222: then
223: echo "$result" > $err_log_path/$dev.fsck
224: exit 12
225: fi
226: fi
227: fi
228: /bin/rm -rf $post_file 2> /dev/null
229: /bin/rm -rf $fstype_file 2> /dev/null
230: /bin/rm -rf $bd_file 2> /dev/null
231: exit 0
232: fi
233:
234: exit 0