Last-modified: 2014-08-18 (月) 03:39:34
スクリプト/mondo.sh

概要

MondoRescueの定期実行用スクリプトです。

コード

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
-
!
-
|
|
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
 
-
!
-
!
 
-
|
|
!
 
-
!
 
-
!
 
 
 
 
 
-
!
 
 
 
 
 
 
 
 
 
 
-
!
 
-
!
#!/bin/bash
 
#
# MondoRescueの定期実行
#
 
#///////////////////////////////////////////////////////////
 
# 送信先アドレス
MAIL_ADDRESS="[email protected]"
# 件名
MAIL_TITLE="[$(hostname)] mondo レポート"
# ローテートする回数
MAX_ROTATE=5
# ディレクトリ名フォーマット
DIR_NAME_FORMAT="%03d"
# バックアップルートパス
BACKUP_ROOT_PATH="/root/foo"
# カレントバックアップのコピー先パス
CURRENT_BACKUP_ROOT_PATH="/home/bar/backup/mondo"
# カレントバックアップのコピー先ユーザー名
CURRENT_BACKUP_USER=bar
# 実行ファイルパス
EXE=/usr/sbin/mondoarchive
# メールパス
MAIL=/usr/bin/mail
# 優先度
NICE="0"
# 区切り
LINE="--------------------"
# 日付フォーマット
DATE_FORMAT="%m/%d-%H:%M:%S"
 
#///////////////////////////////////////////////////////////
 
# ローテート
/bin/rm -r $BACKUP_ROOT_PATH/`printf $DIR_NAME_FORMAT $MAX_ROTATE` 2> /dev/null
for (( count=$MAX_ROTATE; count>1; count-- ))
do
    dirCount=`expr $count - 1`
    /bin/mv $BACKUP_ROOT_PATH/`printf $DIR_NAME_FORMAT $dirCount` $BACKUP_ROOT_PATH/`printf $DIR_NAME_FORMAT $count` 2> /dev/null
done
 
# テンポラリファイル名作成
OUTFILE=`/bin/mktemp` || exit 1
 
# 実行
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " Start MondoRescue Backup $LINE" >> $OUTFILE
backupPath=$BACKUP_ROOT_PATH/`printf $DIR_NAME_FORMAT 1`
/bin/mkdir -p $backupPath
/usr/bin/nice -n $NICE $EXE -Oi -9 -N -s 4480m -d "$backupPath" -E "$BACKUP_ROOT_PATH|/tmp|/home/bar/backup" -p backup_`hostname`-`date '+%Y-%m-%d'` 2>> $OUTFILE
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " End MondoResuce Bakcup $LINE" >> $OUTFILE
 
# カレントバックアップを、外部保存用にコピー
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " Start Copy Current Backup $LINE" >> $OUTFILE
/bin/mkdir -p $CURRENT_BACKUP_ROOT_PATH 2>> $OUTFILE
/bin/chown $CURRENT_BACKUP_USER:$CURRENT_BACKUP_USER $CURRENT_BACKUP_ROOT_PATH 2>> $OUTFILE
currentBackupPath=$CURRENT_BACKUP_ROOT_PATH/current.tar
/bin/rm $currentBackupPath 2> /dev/null
pushd $BACKUP_ROOT_PATH
/bin/tar cvf $currentBackupPath 001 2>> $OUTFILE
popd
/bin/chown $CURRENT_BACKUP_USER:$CURRENT_BACKUP_USER $currentBackupPath 2>> $OUTFILE
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " End Copy Current Backup $LINE" >> $OUTFILE
 
# メール送信
/bin/cat $OUTFILE | tr -d '\r' | $MAIL -s "$MAIL_TITLE" "$MAIL_ADDRESS"
 
# テンポラリファイル削除
/bin/rm -f $OUTFILE

検証時の環境