だいぶ安定してきたので、/etc以下その他の設定ファイルを バックアップするスクリプトを組んで、定期的に流すようにしてみた。
まずは大体、この辺をバックアップする。
これらをそれぞれ .tgz に固めて、適当なところに退避させておこうというわけだ。 こういうのを保管するのに、標準的な場所というのを知らないので、 適当にディレクトリを用意してそこに保存するようにした。
そして、不意のクラッシュに備えるという目的と同じくらい重要なもう一つの目的、 「失敗したときに元に戻せるようにする」ために、バックアップは複数世代 保存しておくようにするのだ。 変な風に設定を変えちゃった直後にバックアップが上書きされちゃったりすると、 動かない設定ファイルを後生大事にバックアップすることに(笑)
そこで、.tgzを作る前に、こんなスクリプトを呼んで、最新+4世代、合計5世代 保管できるようにしてみた。小さいので以下に書いてしまおう。
#!/bin/sh # # 2003/11/30 opa MYNAME=rotate-5g if [ ! "$1" ]; then echo "usage: $MYNAME rotate-filename" exit 100 fi for F; do if [ -f "$F" ]; then if [ -f "$F.1" ]; then if [ -f "$F.2" ]; then if [ -f "$F.3" ]; then if [ -f "$F.4" ]; then rm --force "$F.4" fi mv --force "$F.3" "$F.4" fi mv --force "$F.2" "$F.3" fi mv --force "$F.1" "$F.2" fi mv --force "$F" "$F.1" fi touch "$F" if [ -f "$F.1" ]; then chown --quiet --reference="$F.1" "$F" chmod --quiet --reference="$F.1" "$F" fi done
大したことはない、logrotateの真似事をしているだけだ。(^_^;
引数としてファイル名を与えると、例えばetc.tgzという引数を与えれば、それを etc.tgz.1という名前にリネームする。但しその前にetc.tgz.1というファイルが既に あるかどうか確認し、もしあればそれをetc.tgz.2という名前にリネームする。但し その前にetc.tgz.2というファイルが既にあるかどうか確認し・・・という具合だ。
これを使ってサクサクと作ったスクリプトを毎週流すことにより、とりあえず 不意の事故でも、最大で1週間のまきもどりで済む。あるいは何か設定を間違えても 5週間以内に間違いに気付けば、簡単に元に戻せる、ということになる。
ま、これだけやっても壊れるときは壊れるが。(^_^;