[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:29157] Re: バックアップについて
おきのと申します。
バックアップの問題はけっこう悩みますよね。
わたしは色々試行錯誤して今は dump/restore を使ってやってます。
バックアップ専用の IDE-HDD を用意しておき、毎晩定期的に
差分ダンプをとっております。
で、気がむいたらフルバックアップをとって CD-RW に焼いております。
At Wed, 11 Jul 2001 15:13:23 +0900,
Hideki -Henrich- Yamane wrote:
> ・どのディレクトリのバックアップを取るのが良いのか、
> またそれはどういう理由なのからなのか?
> #Debian流、というのがありますか?
dump だとファイルシステムまるごとですので、
悩む必要はありません (^^;
パーティションを切りまくってる人は逆に不便かもしれませんが。
> ・どんなツールを使うのか、利点と欠点は何か?
> #rsyncくらいしか考えつかない…(^^;
利点は差分ダンプが簡単にできます。
詳しくは "Linux: dump and restore mini-HOWTO" が JF にありますので、
そちらを参照してみてください。
欠点は、rescue ディスクにデフォルトで入ってないってことでしょうか?
たしか cpio は入ってたと思います。
ちなみに、rsync と言っておられるということは、
ネットワーク経由のバックアップを想定されているんでしょうか?
dump/restore もネットワーク経由で動作させることが可能ですが、
あまりおすすめできません。
# ルートでリモートシェルが実行できるよう設定する必要がある。
適当なんではずかしいのですが、
参考までにわたしが使っているスクリプトをのせておきます。cron で
00 3 * * * root dumper.sh /dev/sda1
などと設定すれば毎日差分ダンプをとってくれます。
フルバックアップするには shutdown して single user mode になってから
# dumper.sh /dev/sda1 0
とすればOKです。CD-R へのバックアップを念頭に置いているので、
dump されたファイルは 640KB のマルチボリュームとなるようにしてます。
========== dumper.sh ==========
#!/bin/sh
function help () {
echo
echo "dumper.sh filesystem [dumplevel]"
exit 0
}
# args check
if [ $# -eq 0 -o $# -gt 2 ]; then
help
fi
if ! [ -b $1 ]; then
echo "$ is not BlockDevice"
help
fi
if [ $# -eq 2 ]; then
if [ `expr "$2" : "[0-9]$"` = '0' ] ; then
echo "dump level must be 0-9"
help
fi
FORCELEVEL='1'
DUMPLEVEL=$2
fi
# macros
DUMPMOUNT=/mnt/dump
DEVNAME="`basename $1`"
LOGFILE=$DUMPMOUNT/${DEVNAME}.log
COUNTER=$DUMPMOUNT/${DEVNAME}.count
MAXLOGSIZE=100
HANOI=(1 3 2 5 4 7 6 9 8)
# main
## mount
if ! [ -n "`df | grep /mnt/dump`" ]; then
mount $DUMPMOUNT
fi
if [ -z "$FORCELEVEL" ]; then
## check & set counter
if ! [ -f $COUNTER ]; then
echo '0' > $COUNTER
fi
read IDX < $COUNTER
if [ `expr "$IDX" : "[0-8]$"` = '0' ] ; then
echo '0' > $COUNTER
IDX=0
fi
DUMPLEVEL=${HANOI[$IDX]}
fi
OUTPUT=$DUMPMOUNT/${DEVNAME}_${DUMPLEVEL}_
## check logfile size
touch $LOGFILE
if [ `du -k "$LOGFILE" | awk '{print $1}'` -gt $MAXLOGSIZE ]; then
echo "=== logfile size has reached $MAXLOGSIZE kB..." >> $LOGFILE
mv $LOGFILE $LOGFILE.bak
fi
## print header
echo "+++ Level <<$DUMPLEVEL>> DUMP --" `date` >> $LOGFILE
## remove old dump file
rm -f ${OUTPUT}* >> $LOGFILE
## dump
dump -$DUMPLEVEL -uM -B 655360 -f $OUTPUT $1 >> $LOGFILE 2>&1
sync; sync; sync;
## increment counter
if [ -z "$FORCELEVEL" ]; then
IDX=`expr "$IDX" + 1`
if [ `expr "$IDX" \> 8` != '0' ]; then
IDX=0
fi
echo $IDX > $COUNTER
fi
## reset counter if $DUMPLEVEL = 0
if [ $DUMPLEVEL -eq 0 ]; then
echo '0' > $COUNTER
fi
##
umount $DUMPMOUNT
exit 0
========== ここまで ==========
--
Hirotake Okino (沖野 裕丈)
Email-to: hokino@xxxxxxxxx
PGP Finger Print: 34 BC A2 B3 77 E8 A1 A3 C6 51 BB C7 9E 3C 8F 64
PGP Public Key:
http://piezo.kuee.kyoto-u.ac.jp/~hokino/hokino.pubkey.asc