DAT へバックアップ
#!/bin/csh
#####################################
##### Single User Mode 起動確認 #####
#####################################
set WORKDIR = "/usr/local/backup" ##### 作業ディレクトリを指定
echo "This script is for backup."
echo "Are you starting Single User Mode? (y/n) ?"
set yes = $<
if ( "$yes" == "y" || "$yes" == "Y" || "$yes" == "yes" || "$yes" == "YES" ) then
if ( -d $WORKDIR ) then
echo "$WORKDIR exists and next..."
else
mkdir $WORKDIR
echo "made $WORKDIR and next..."
endif
##################################
##### ディスク情報を調べる #####
##### df -k #####
##### テープデバイスを調べる #####
##### cat /proc/scsi/scsi #####
##### ls -l /dev/*st[0-9] #####
##################################
set LOG = "$WORKDIR/backup.log" ##### ログファイルを指定
set array = ( /boot / /home /var ) ##### バックアップするディスクスライスを指定
set DEV = "/dev/nst0" ##### nst0 は巻き戻ししない方式
set TAPESTATUSLOG = "$WORKDIR/tapestatus.log"
#######################################################
##### テープが挿入されているかどうかチェックする。#####
#######################################################
echo "============================================================" |& tee -a $LOG
echo "Tape check: `date`" |&tee -a $LOG
echo "------------------------------------------------------------" |& tee -a $LOG
mt -f $DEV status |& tee $TAPESTATUSLOG
grep -R "BOT ONLINE" $TAPESTATUSLOG
set MTRET = $status
if ( $MTRET != 0 ) then
echo "Error: Tape not found \!\! ErrorCode = ${MTRET}" |& tee -a $LOG
echo "============================================================" |& tee -a $LOG
exit 0
endif
############################################################
##### テープが挿入されていなかったらプログラムを終了。######
############################################################
############################################################
##### Tape block size が 512 以外だったら 512 にセット #####
############################################################
grep -R "Tape block size 512 bytes" $TAPESTATUSLOG
set TAPERET = $status
if ( $TAPERET != 0 ) then
mt -f $DEV setblk 512 |&tee -a $LOG
endif
###################################################
##### テープを巻き戻してテープのたるみを取る。#####
###################################################
mt -f $DEV rewind |& tee -a $LOG
###################################################
###### ディスクスライス情報をログに書き込む。######
###################################################
echo "============================================================" |& tee -a $LOG
df -k >>$LOG
echo "------------------------------------------------------------" |& tee -a $LOG
cat /etc/fstab |& tee -a $LOG
echo "------------------------------------------------------------" |& tee -a $LOG
fdisk -l |& tee -a $LOG
echo "------------------------------------------------------------" |& tee -a $LOG
sfdisk -d /dev/sda > $WORKDIR/sda.out |& tee -a $LOG
###########################
#### バックアップ開始 #####
###########################
foreach FSYSTEM (`echo $array`)
echo "------------------------------------------------------------" |& tee -a $LOG
echo "$FSYSTEM" |& tee -a $LOG
echo "START TIME: `date`" |& tee -a $LOG
echo "------------------------------------------------------------" |& tee -a $LOG
dump 0uf $DEV $FSYSTEM |& tee -a $LOG
set RET = $status
echo "------------------------------------------------------------" |& tee -a $LOG
echo "END TIME: `date`" |& tee -a $LOG
echo "------------------------------------------------------------" |& tee -a $LOG
echo "" |& tee -a $LOG
if ( $RET != 0 ) then
echo "Error: Backup Failed \!\!\! ErrorCode = ${RET} " |& tee -a $LOG
endif
sleep 10
end
####################################
##### バックアップが終わったら #####
####################################
if ( $RET != 0 ) then
echo "Error: Server Backup Failed\!\! `date`" |& tee -a $LOG
echo "============================================================" |& tee -a $LOG
echo "" |& tee -a $LOG
echo "" |& tee -a $LOG
mt -f $DEV offline |& tee -a $LOG
else
echo "Server Backup Success\!\! `date`" |& tee -a $LOG
echo "============================================================" |& tee -a $LOG
echo "" |& tee -a $LOG
echo "" |& tee -a $LOG
mt -f $DEV offline |& tee -a $LOG
endif
##### Single User Mode 起動確認 else
else
echo "Before use this Program, start Single User Mode."
exit
endif
exit
| < 戻る | 次 > |
|---|

