AサーバのSAMBAディレクトリを旧サーバでるBサーバへ自動バックアップするシェル
WakeOnLANで夜間に旧サーバを自動起動しバックアップを行い
終了時にsshで相手へログインしてシャットダウンして終わる
スクリプトはAサーバ側で深夜にCRONで起動する
エラーが出たらメールで通知する(/script/ruby2mail.rb)
スクリプト中の 192.168.1.◆◆◆ はバックアップ先の旧サーバのIPアドレス
--------------------------------------------------------------------------------
#! /bin/bash
# 排他実行用ロック
LOCKED="/tmp/backup.lock"
#エラーメール送信先
address="****@gmail.com"
subject="[SERVER]ファイルサーバ"
cd /script/
YOUBI=$(date '+%w') # 曜日取得
#------------------------------------------------------------------------------#
# 実行前に排他処理を行う
#------------------------------------------------------------------------------#
trap 'echo "trapped."; rmdir $LOCKED; exit 1' 1 2 3 15
CNT=1
until mkdir $LOCKED 2> /dev/null; do
sleep 5
CNT=`expr $CNT + 1`
if [ $CNT -gt 3 ]
then
echo "LOCK!"
#メール送信
/script/ruby2mail.rb "バックアップ処理 二重起動ロックにて実行中止"
exit 0;
fi
done
# 土曜深夜(日曜)と日曜深夜(月曜)はネットワークバックアップは行いません
if [ $YOUBI -ge 2 ]; then
# 旧住宅部サーバの起動
# to 192.168.1.◆◆◆ backupfsへのバックアップ
wakeonlan -i 192.168.1.255 00:01:80:77:b3:5f
sleep 160
PINGCHK=$(ping -c 1 192.168.1.◆◆◆|grep "Unreachable")
for PINGS in $PINGCHK
do
echo $PINGS
if [ ${PINGS} = "Unreachable" ]
then
echo "バックアップサーバ起動を確認できませんでした"
#メール送信
/script/ruby2mail.rb "192.168.1.◆◆◆が起動していません(処理中断)"
rmdir $LOCKED
exit 0;
fi
done
echo "ネットワークバックアップ開始"
# ※昨日のバックアップを旧サーバへバックアップします
rsync -Hazrtpog --progress -delete -e ssh /samba/backup/ 192.168.1.◆◆◆:/samba/backup1/
echo "ネットワークバックアップ終了"
echo "旧サーバシャットダウン"
ssh 192.168.1.◆◆◆ "shutdown -h now"
fi
# 内部バックアップ
echo "内部バックアップ開始"
rsync -Ha --progress -delete /samba/share /samba/backup
echo "内部バックアップ終了"
# ロック解除
rmdir $LOCKED
# EOF
0 件のコメント:
コメントを投稿