一応の完了: 玄箱でバックアップ

バックアップを考える」、「Gentoo on 玄箱←失敗」、「Debian etch on 玄箱」の続き。

バックアップは以下の方針でいくことにした。

んで、こんなスクリプトを作ってみた。FreeBSD用なんで、他の環境で動くかは分かりません。 /backup がサーバにマウントした玄箱の共有ボリューム、SERVERNAMEが玄箱のSambaのNetBIOS名です。自分が使えりゃそれでいい的なスクリプトなんで、全然スマートじゃないとおもいます。ごのスクリプトを毎日cronで実行させる予定。

#!/bin/sh

#自動バックアップスクリプト
#2008/11/1 作成 by KtJ

# /, /var, /usrをdumpでバックアップ
# /のバックアップ先→/backup/dump/root.???
# /varのバックアップ先→/backup/dump/var.???
# /usrのバックアップ先→/backup/dump/usr.???
# ???: バックアップを行った日の前日の曜日
# 木曜に実行したときは、dumpでLevel 1バックアップ
# それ以外の日に実行した場合は、dumpでLevel 2バックアップ
# (木曜からの差分)
# Level 0バックアップはmake world時に実行

# まず念のためにjailを落とす

echo "stopping jail"
/etc/rc.d/jail stop
echo "jail is stopped"


#曜日の取得(日曜=0、月曜=1・・土曜=7)
DAY=`/bin/date +%w`

#バックアップ用ボリュームのマウント
MT=`df | grep SERVERNAME`
if [ ! "${MT}" ]
then
      echo "/backup is not mounted. Now mounting"
      /sbin/mount /backup
      echo "Mounted"
else
      echo "/backup is already mounted"
fi

#バックアップ処理
case "${DAY}" in
      0) DAY2="sat"
      DAY3="fri";;

      1) DAY2="sun"
      DAY3="sat";;

      2) DAY2="mon"
      DAY3="sun";;

      3) DAY2="tue"
      DAY3="mon";;

      4) DAY2="wed"
      DAY3="tue";;

      5) DAY2="thu"
      DAY3="wed";;

      *) DAY2="fri"
      DAY3="thu";;
esac

if [ "${DAY}" -eq 4 ]
then
      echo "Backupping root"
      OUTPUT_FILE="/backup/dump/root.""${DAY2}"
      /sbin/dump -1 -u -a -L -f "${OUTPUT_FILE}" / 1>/dev/null 2>>/var/log/dump.error
      echo "done"
      echo "Backupping var"
      OUTPUT_FILE="/backup/dump/var.""${DAY2}"
      /sbin/dump -1 -u -a -L -f "${OUTPUT_FILE}" /var 1>/dev/null 2>>/var/log/dump.error
      echo "done"
      echo "Backupping usr"
      OUTPUT_FILE="/backup/dump/usr.""${DAY2}"
      /sbin/dump -1 -u -a -L -f "${OUTPUT_FILE}" /usr 1>/dev/null 2>>/var/log/dump.error
      echo "done"
else
      echo "Backupping root"
      OUTPUT_FILE="/backup/dump/root.""${DAY2}"
      /sbin/dump -2 -u -a -L -f "${OUTPUT_FILE}" / 1>/dev/null 2>>/var/log/dump.error
      echo "done"
      echo "Backupping var"
      OUTPUT_FILE="/backup/dump/var.""${DAY2}"
      /sbin/dump -2 -u -a -L -f "${OUTPUT_FILE}" /var 1>/dev/null 2>>/var/log/dump.error
      echo "done"
      echo "Backupping usr"
      OUTPUT_FILE="/backup/dump/usr.""${DAY2}"
      /sbin/dump -2 -u -a -L -f "${OUTPUT_FILE}" /usr 1>/dev/null 2>>/var/log/dump.error
      echo "done"
fi

#バックアップ用ドライブのアンマウント
/sbin/umount /backup

#jailの再開
echo "restarting jail"
/etc/rc.d/jail start
echo "done"

それから、Level0 dump用のスクリプトも作成。こちらは一度実行して動作することを確認しました。

#!/bin/sh

#自動バックアップスクリプト(Level0)
#2008/11/1 作成 by KtJ

# /, /var, /usrをdumpでバックアップ
# /のバックアップ先→/backup/dump/root.0
# /varのバックアップ先→/backup/dump/var.0
# /usrのバックアップ先→/backup/dump/usr.0
# make world時にシングルユーザモードで実行するLevel 0バックアップ

#バックアップ用ボリュームのマウント
MT=`df | grep SKYTRAIN`
if [ ! "${MT}" ]
then
      echo "/backup is not mounted. Now mounting"
      /sbin/mount /backup
      echo "Mounted"
else
      echo "/backup is already mounted"
fi

#バックアップ処理
echo "Backupping root"
OUTPUT_FILE="/backup/dump/root.0"
/sbin/dump -0 -u -a -L -f "${OUTPUT_FILE}" / 1>/dev/null 2>>/var/log/dump.error
echo "done"
echo "Backupping var"
OUTPUT_FILE="/backup/dump/var.0"
/sbin/dump -0 -u -a -L -f "${OUTPUT_FILE}" /var 1>/dev/null 2>>/var/log/dump.error
echo "done"
echo "Backupping usr"
OUTPUT_FILE="/backup/dump/usr.0"
/sbin/dump -0 -u -a -L -f "${OUTPUT_FILE}" /usr 1>/dev/null 2>>/var/log/dump.error
echo "done"

#バックアップ用ドライブのアンマウント
/sbin/umount /backup

処理時間は一時間あたり10Gバイト程度でした。ちと遅いかな。

あと、サーバがmake worldで落ちているときも他のPCが使えるよう、bind9(slave)とsquidGuardも玄箱に導入。これで一応玄箱の設定は完了(squidとsquidGuardの設定はこれからだが)。当面はこれ以上のことは玄箱にさせないつもり。

結局、玄箱には以下のパッケージを導入した。

これで/dev/hda1の使用量は531MB。うち/varが189MB。何でこんなに?と思ったらaptとdpkg関連だった。

コメント(0)


Blog category: Ultima | Adventure games | BSD and Linux | FM TOWNS and Japanese home computers | Computers | Bottle | 広島新球場 | 日本プロ野球 | 広島市民球場跡地とサッカースタジアム | その他スポーツ | Other topics
2002 08 09 10 11 12
2003 01 02 03
2004 01 02 03 04 06 08 09 10 11 12
2005 01 02 03 04 05 06 07 08 09 10 11 12
2006 01 02 03 04 05 06 07 08 09 10 11 12
2007 01 02 03 04 05 06 07 08 09 10 11 12
2008 01 02 03 04 05 06 07 08 09 10 11 12
2009 01 02 04 05 06 07 09 10
2010 01 03 04 05 08 11
2011 01 02 03 04 07 11 12
2012 01 02 03 09 10 11
2013 01 02 03 05 06 07 08 09 10 11 12
2014 01 02 03 04 05 06 07 10 11 12
2015 01 02 03 04 05 07 08 11 12
2016 03 04 05 07 08 09 10 11
2017 06
2018 11 12
2019 01 04 10
2020 05 06 07
2021 01 07 08

Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。