当社のオフサイト バックアップ システムでは、スタッフが毎週、どの USB ドライブをファイル サーバーに接続するかを交互に切り替えます。
どちらのドライブが接続されても、Robocopy を実行するスケジュールされたバッチ ファイルを使用して、サーバー上のデータ パーティションと同期されます (毎晩午後 10 時)。USB ドライブ自体は両方とも Truecrypt を使用して暗号化されており、どちらかが紛失または盗難された場合に組織を保護します。
当社のバックアップ システムにおける弱い (人力に依存する) リンクは、毎週ドライブをローテーションする責任のあるスタッフ メンバーです。このスタッフ メンバーは、毎週のローテーションを忘れるだけでなく、1 か月以上も忘れてしまうことがあります。
以前の質問の回答のおかげで、ドライブがいつローテーションされたかを追跡できるログ設定がすでにありますここつまり、特定の日にどのドライブが接続されているかを追跡するログ ファイルがすでに存在します。
私が今やりたいことは、バックアップ スケジュールが 2 週間以上守られていない場合に、ドライブのローテーションを担当するユーザー、ユーザーの上司、および私自身 (システム管理者) にサーバー (SBS 2003) から自動電子メールが送信されるようにすることです。Outlook 2010 は現在サーバーにインストールされていませんが、必要に応じてインストールできます。
どのバックアップ ドライブが接続されているかを追跡するログ内のデータは、次の形式になります。
Volume in drive V is BACKUP 1
Sat 05/10/2014
22:00:00.77
Volume in drive V is BACKUP 1
Sun 05/11/2014
22:00:00.44
Volume in drive V is BACKUP 1
Mon 05/12/2014
22:00:00.39
Volume in drive V is BACKUP 1
Tue 05/13/2014
22:00:01.50
ログ ファイルの下部に同じバックアップ USB ドライブ番号が一定回数連続して表示された場合に警告メールを自動的に送信する方法をご存知の方はいませんか? たとえば、14 回以上 (これは、ユーザーが実行する必要があった週ごとのドライブ ローテーションが 1 週間遅れていることを示すため)。
どのようなアイデアでも大歓迎です!
答え1
これは機能します。if 条件内に電子メールを送信するためのコードを追加し、LOGFILE をログファイル パスに変更する必要があります。
#!/bin/bash
LOGFILE="logtest"
COUNT=`tail -n16 $LOGFILE | grep "Volume in" | uniq -c | cut -c0-7 | tail -n1`
echo "Last tape repeated $((COUNT)) times"
if [ $COUNT -gt 3 ]; then
echo "Sending email..."
mutt -s"FATAL: Missing tape rotation" [email protected] < /dev/null
fi