バックアップ

データのバックアップは常に大事ですが、時間がかかる上に、ディスク容量にも限りがあります。DVDバックアップでは管理が大変なので、windows機では、RAID1でミラーリングしています。linuxではSoftware RAIDも使えますが、cronによる定期バックアップをした方が柔軟で効率よくバックアップできます。バックアップにはtarも使えますが、差分バックアップができるdarが便利です。
# aptitude
> dar
# dar -c /opt/test -z -R / -g var -P var/run
これで、/opt/test.1.darにgzipで圧縮されたアーカイブができます。
-cがアーカイブ名、-Rが基準ディレクトリ、-gが対象ディレクトリ、-Pが除外ディレクトリ、-zがgzip圧縮です。
# dar -c /opt/new -y -R / -g var -A /opt/test
これで、testからの差分アーカイブができます。
-jがbzip2圧縮、-Aが参照アーカイブです。
bzip2はgzipよりも圧縮率に優れており、Athlon1Gでは圧縮時間も短く、便利です。darのフルバックアップは、tarとサイズはほぼ同じですが、実行時間はやや短縮しています。また、差分バックアップすると、ほんとに高速で快適です。
# dar -l /opt/new -as
これで、実際に保存されている内容が確認できます。
# dar -x /opt/new -g var/log
これで、logディレクトリが展開できます。
/etc/cron.dailyに下記のようなバックアップスクリプトを入れておけば完璧です。当然、/optは別のハードディスクドライブに割り当ています。


#!/bin/sh
#
# differential backup every day, full backup on Sunday, keep an archive every month
#
do_dar() {
SAVEPATH=$1 ; TARGET=$2 ; OPTI=”-w -Q -y -R /”
if test -a ${SAVEPATH}.1.dar ; then
CONDI=`date +\%w`
else
CONDI=0
fi
case $CONDI in
0)
dar $OPTI -c ${SAVEPATH}${CONDI} $TARGET
mv ${SAVEPATH}${CONDI}.1.dar ${SAVEPATH}.1.dar
;;
*)
dar $OPTI -c ${SAVEPATH}${CONDI} $TARGET -A $SAVEPATH
;;
esac
if test `date +\%d` = 01 ; then
cp -a ${SAVEPATH}.1.dar ${SAVEPATH}`date +\%m`.1.dar
fi
}
# main
do_dar /opt/etc “-g etc -g root”
do_dar /opt/home “-g home”
do_dar /opt/var “-g var”
exit 0

コメント