Янв 21 2009

Свой скрипт для бекапа.

Бекап — это по моему мнению, одна из самых важных задач администратора. Вы всегда будете спать спокойно по ночам зная, что где то недалеко в столе или сейфе лежит копия самых важных данных с сервера. Существуют специализированные системы бекапа, это к примеру Bacula или Amanda, они хороши тем, что работают автоматически, создают разные виды бекапов и …, довольно тяжелые. Поднимать такую систему есть смысл, когда у вас много серверов, очень большой объем данных и есть возможность выделить отдельный сервер, который будет держать систему бекапа. Если же у вас пара серверов, объем данных до десятка гигабайт, проще всего делать локальный бекап, списывая время от времени новые бекапы на диски.

Для такой ситуации я использую вот такой простой скрипт:

#!/bin/sh
DATE=`date +%d%m%y`
OLDATE=`/bin/date -v -7d +%d%m%y`
HOSTNAME=`/bin/hostname -s`
FILENAME=$HOSTNAME'-'$DATE
OLDFILENAME=$HOSTNAME'-'$OLDATE
BACKDIR='/home/backup'
WHAT='/home/hilik/'
/bin/tar --exclude *.core* -jcf $BACKDIR/$FILENAME.tar.bz2 ${WHAT}
`chmod 777 $BACKDIR/$FILENAME.tar.bz2`
rm -f $BACKDIR/$OLDFILENAME.tar.bz2

Приведенный скрипт архивирует все содержимое каталога, указанного в переменной $WHAT, имя архива формируется из имени хоста, на котором производится операция и даты. По окончании создания архива будет произведено удаление архива сделанного 7 дней назад.

Операция восстановления файлов сводится к распаковке архива за нужный день и замене поврежденных файлов. Разархивирование производится такой командой:

tar xvfj 'имя архива'

Теперь достаточно установить скрипт в cron

crontab -e

Например на 3 часа ночи(скрипт мы разместим в /root/bin/ и назовем backup.sh), это будет выглядеть так:

0 3 * * * /root/bin/backup.sh

И не забывать время от времени списывать архивы на DVD диски или хотя бы на другой компьютер.


Украинская Баннерная Сеть