created and maintained by tokd

ServerBackup

GNU tar によるインクリメンタルバックアップ

#!/bin/sh

cd /
TARGET="etc home"
LIST=/var/backup/list
WEEKDAY=`date +%w`

if [ $WEEKDAY -eq 0 ]; then
        # full backup
        mt -f /dev/rmt/0 rewind
        rm -f $LIST
fi

/usr/local/bin/tar cf /dev/rmt/0n --listed=$LIST $TARGET

rsync によるミラーリング


RAID では誤ってファイルを削除しても復元できない。テープから復旧するのも面倒なので、同じ容量のハードディスクを 2 台使って、rsync により一日一回バックアップを取っておく。こうすれば、最悪でも一日前の状態にすぐに戻せる。

起動ディスクが壊れても、バックアップ側でブートできるようにしておけば、さらに安心。

vfstab は予め 2 種類(通常起動用、予備ディスク起動用)準備しておく。以下のシェルスクリプトにおけるブートブロック書き込みは Solaris のコマンドを使用している。念のため、ファイルロックによる簡単な排他制御も行う。


#!/bin/sh

PATH=/usr/local/bin:/usr/sbin:/usr/bin
export PATH
cd /

if [ -f /tmp/mirroring.lock ]; then
        exit
fi
: > /tmp/mirroring.lock
trap 'rm -f /tmp/mirroring.lock' 0 1 2 3 5 10 13 15

mount /bak/root
rsync -ax --delete / /bak/root/
mv /bak/root/etc/vfstab /bak/root/etc/vfstab.original
mv /bak/root/etc/vfstab.mirror /bak/root/etc/vfstab
umount /bak/root

LIST="usr var home opt"

for d in $LIST; do
        mount /bak/$d
        rsync -ax --delete /$d/ /bak/$d/
        umount /bak/$d
done

installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1t2d0s0