誤ったシステム設定を行ってしまった場合、過去の設定を確認したいことがあります。
そこで、”システム設定”関連のフォルダ他を、変更が行われた際にバックアップし、過去数世代のバックアップを残すように設定しておこうと思います。【注*1】
バックアップ用ファイルシステム領域は、メインファイルサーバーの飛ばしたpool復旧作業に際して[*2]、ActiveDirectoryドメインコントローラー(AD-DC)に、RAID1なエンクロージャーを取り付け、そちらに移動してあります[*3]。
FreeBSDな各サーバーの起動時に、””システム設定”関連のフォルダ他に変更が加えられたかを確認して、AD-DCのバックアップ用ファイルシステム領域にバックアップをNFS経由で行う設定をしておこうと思います😀。
"rsync over ssh"で行う方が美しいかもしれませんが、”AD-DCのrsync over ssh設定が必要”なことと、転送すべきデータ総量もそれほどではありませんので、とりあえずNFS経由でバックアップを行うことにしました😅。
1. 準備
(1)ツールのインストール
今回、スクリプトで使うツールをインストールしておきます。
既にインストール済みのパッケージも念のため、アップデートしておくことにしました。
2. スクリプト作成(参考)
(1)ファイルローテート用サブスクリプト
過去の設定状態を確認したいときのために、何世代分かのTARボールは取っておきたいので、TARボールの末尾に数値を付加して世代管理をすることにしました。
FreeBSD/Linuxの/var/log/messages等と同様の考えで世代管理をします。
つまり、TARボール末尾の数値が大きいほど、古い設定情報とすることにしました。
FreeBSD/Linuxの標準ツールでこの処理を行うのも手ですが、
手前勝手なスクリプトを作ってみました😅。
|
#!/bin/sh |
|
何世代過去まで、取って置くかはハードコーディングせずに、パラメータで与えることにしてみました。
(2)メインスクリプト
システム設定の変更状況を確認して、rsyncを用いてシステム設定ディレクトリ等のバックアップと、TARボールの世代変更を呼び出すスクリプト(上記)を作成します。
バックアップしておきたいフォルダには”/var/log”もありますが、”/var/log”等は起動のたびに中身が変わるので、変更状況を確認するフォルダから除外します🤔。
変更状況を確認するフォルダは
- /etc、/boot、/root、/usr/local/etc、/var/yp、/var/cron
にしています。
ただ、/bootディレクトリの中の”entropy”ファイルは、シャットダウンのたびに更新されるので、/bootディレクトリの更新状況を確認する際、このファイルを確認対象から除外する必要があります🤔。
また、コーディング量を減らすためにrsyncの"--mkpath"オプションははrsync Ver 3.2.3以前では使えないオプションなので🤔、3.2.3以前の場合を考えて、とりあえずこのオプションは変数として定義しておくことにしました😅。
|
#!/bin/sh --delete \ |
|
2. サーバー設定
| 訂正 |
|
確認は、サーバーの起動時に行うことにします。
/usr/local/etc/rc.dにサーバー毎にシステム設定のバックアップを行うスクリプトを配置することで、システムの起動時に、”設定変更確認”&”システム設定のバックアップ”を行います。
| root@FreeBSD:# cd /usr/local/etc/rc.d | ||
| root@FreeBSD:# touch 99.system.setting-backup.sh | ||
| root@FreeBSD:# chmod +x 99.system.setting-backup.sh | ||
| root@FreeBSD:# vi 99.system.setting-backup.sh |