外付けのディスクが故障していてバックアップができていなかった…。
今回はその対策としてメール通知するバッチファイルのご紹介です。
バックアップがない場合、いざという時の損失がはかり知れません。
例えば、パソコンのデータが消失した場合、それは自分の資産が消失したと言っていいでしょう。
そんな事にならないように私が実践してる対策をご紹介します。
発端となった出来事
ある土曜日の朝、携帯電話が鳴りました。
「サーバが起動してないんだけど」
ハードディスクを3本搭載したいわゆるRAID-5のサーバだったのですが、そのうち2本が故障してしまったようです。
「まずは早急に代替サーバを手配し、バックアップを復元しないと」と考えていました。
が、毎日バックアップしているはずのUSBハードディスクも故障していていたのです…。
業務で日々蓄積されたデータが復元できない事態に、現場は凍り付いてしまいました。
その後どうなったか
近所のデータ復旧屋さんに持っていくも、1日がかりでデータは6割程度しか救出できず。
これではまったく使い物にならなかったため、最終的には新幹線で東京へ向かいとあるデータ復旧会社へ持ち込み、そちらで99.9%復元できました。
とはいえ、復元できたのは障害発生時から1週間経過していました。
その間の業務は手作業でしたし、損害も200万以上要することとなりました。
バックアップが取れていれば…と悔やんでも悔やみきれない経験をして以来、私は日々のバックアップが完了したらメールを飛ばすようになった訳です。
概要
メールには「SMAIL」を使っています。
以下のページでも「SMAIL」を使うための記事を公開してます。
バッチファイルでメール送信が手軽にできるため、かなり重宝しています。
バッチファイルの内容
それではバッチファイルの内容について、備忘録を以下に記載しておきたいと思います。
下準備
まずは下準備をします。
echo off でコマンドを復唱させないようにし、clsで画面の表示をきれいにしておきます。
- echo off
- cls
- CD D:\WORK
D:\WORKはバッチファイルやSMAIL.exeが置いてある場所です。
バックアップ先をチェック
バックアップ先にアクセスできるかチェックします。
ここではバックアップの中に「EXPDP_Backup.log」というファイルがある前提です。
- :CHECK
- IF NOT EXIST F:\backup\EXPDP_Backup.log goto CHECK-NG
- goto CHECK-OK
Fドライブへアクセスが失敗したら「CHECK-NG」へ、成功したら「CHECK-OK」へ進むよ
結果により、OKもしくはNGメールを送信
結果により、OKもしくはNGメールを送信します。
- :CHECK-OK
- smail -hsmtp.mail.yahoo.co.jp -f"send-address@yahoo.co.jp" -i -s"backup結果(OK)" -F"本文OK.txt" receive-address@yahoo.co.jp -t
- IF NOT %ERRORLEVEL% == 0 goto ERR
- goto CHECK-END
- :CHECK-NG
- smail -hsmtp.mail.yahoo.co.jp -f"send-address@yahoo.co.jp" -i -s"backup結果(NG)" -F"本文NG.txt" receive-address@yahoo.co.jp -t
- IF NOT %ERRORLEVEL% == 0 goto ERR
- goto CHECK-END
エラー時のみメール送信することも可能です。
しかし、メールが来ない=バックアップが正常とは限りません。
エラー時でもなんらかの理由でメール送信できない(例えば過去にはyahooメールのセキュリティ仕様変更に伴いメールが送信できなくなったこともありました)場合もあります。
メールは必ず送信されるようにしておき、メールタイトルで異常有無を判別できるような工夫(エラー時はタイトルに★★を付けて目立たせる等)をすることをお勧めします。
後処理
もし、SMAILでなんらかのエラーがあった場合、気づけるようにしておきます
- :ERR
- echo ■■エラーが発生したため送信できませんでした■■
-
- :END
- exit
まとめ
今回はUSBドライブを例に挙げましたが、少し記述を変更すればNASなどネットワーク上のバックアップにも対応できます。
実際にネットワーク上にバックアップするケースもあるのですが、先日も電気工事で休日に停電があり翌日にバックアップ用NASの電源を入れ忘れたことで、バックアップNGメールが届きました。
バックアップに限らず、ちょっとした異常を感知しメール送信することで大きな損害を被ることのないようにしたいものですね。
コメント