BackUp системы: FreeBSD + dump + ???

На доскональное знание данной темы, не может претендовать, пожалуй ни один спец, из ныне живущих на земле. ;-)
Так поможем друг другу.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
Ziggy Stardust
Advanced member
Сообщения: 327
Зарегистрирован: 15 сен 2007, 13:23
Откуда: Екатеринбург
Контактная информация:

BackUp системы: FreeBSD + dump + ???

Сообщение Ziggy Stardust » 20 мар 2008, 17:58

Система: FreeBSD разных версий.

Задача: ежедневный бэкап всей системы по сетке на сервер хранения резервных копий.

Цель: в случае краха системы (не важно по какой причине) не восстанавливать все с нуля, а загрузиться с компашки и опять же по сетке 'restore ...'.

Почитав хэндбук и 'man dump', пришел к выводу, что в принципе большего и не надо. Достаточно ежедневно дампить с каждого сервера все нужные ФС (с определенным уровнем инкрементальности, тут бы я тоже совета спросил?).

Чтобы по крону подобную задачу запускать, нужно какой-либо скриптец в качестве обвязки для '/sbin/dump'. Чтобы репорты по почте слал, всякие нештатные ситуации отрабатывал и т.п.

Чтобы велосипед не изобретать, хочу узнать - нет ли чего на эту тему готового, работающего и уже проверенного практикой?

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Re: BackUp системы: FreeBSD + dump + ???

Сообщение Stranger03 » 21 мар 2008, 10:43

Ziggy Stardust писал(а):Чтобы велосипед не изобретать, хочу узнать - нет ли чего на эту тему готового, работающего и уже проверенного практикой?
Ну почему же нет, лезем на сайт наших партнеров www.opennet.ru, запускаем поиск и вперед. Другое дело что все-равно вам придется все дорабатывать напильником.

Ziggy Stardust
Advanced member
Сообщения: 327
Зарегистрирован: 15 сен 2007, 13:23
Откуда: Екатеринбург
Контактная информация:

Re: BackUp системы: FreeBSD + dump + ???

Сообщение Ziggy Stardust » 21 мар 2008, 11:18

Stranger03 писал(а):
Ziggy Stardust писал(а):Чтобы велосипед не изобретать, хочу узнать - нет ли чего на эту тему готового, работающего и уже проверенного практикой?
Ну почему же нет, лезем на сайт наших партнеров www.opennet.ru, запускаем поиск и вперед. Другое дело что все-равно вам придется все дорабатывать напильником.
Дык, там я первым делом поискал... Видимо плохо искал.

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Re: BackUp системы: FreeBSD + dump + ???

Сообщение Stranger03 » 21 мар 2008, 15:12

Ziggy Stardust писал(а):Дык, там я первым делом поискал... Видимо плохо искал.
Вы мне в аську стукнитесь, правда я сейчас что-то приболел, сильно, голова еле соображает. Если терпит, на след.недельке попробую помочь.

Ziggy Stardust
Advanced member
Сообщения: 327
Зарегистрирован: 15 сен 2007, 13:23
Откуда: Екатеринбург
Контактная информация:

Сообщение Ziggy Stardust » 25 мар 2008, 15:19

Нашел (вернее подсобили в fido7.ru.unix) скриптец, который можно за основу взять.

Заточен пока под алгоритм "ханойской башни".

Привожу его целиком с коментариями. Дело полезное, вдруг кто еще кроме меня озадачится подобным... :-)

Код: Выделить всё

#! /bin/sh
#
# Создание резервной копии всех файловых система хоста.
#
# $Id: dumpallfs.sh 532 2007-11-11 16:22:33Z dsh $
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin


# Список файловых систем, dump которых необходимо делать.
ALLFS="/ /usr/local /home /var"

# Суффих dump файла.
DUMPEXT="dump.gz"

# В этом каталоге сохраняются бэкапы.
DUMPSTORAGE="/FreeBSDbackup"

# Кол-во dump'ов в цикле всего.
PERIOD0=45

# Кол-во dump'ов до первого дампа первого уровня в одном цикле: "0 3 2
# 5 4 7 6 9 8 ...". Этот цикл увеличивается за счет дампов 9-го
# уровня.
PERIOD1=9


sudo mount "$DUMPSTORAGE" || exit $?

# Вычислить сегодняшний уровень дампа.
seq=$PERIOD0
[ -f $DUMPSTORAGE/dumpseq ] && seq=`cat $DUMPSTORAGE/dumpseq`
[ "$seq" -gt $PERIOD0 ] && seq=$PERIOD0
# Вычисление производится относительно текущего положения в цикле
# $PERIOD1.
next_level=$(($seq % $PERIOD1))
case "$next_level" in
    0)
	case $seq in
	    $PERIOD0)
		dumplevel=0
		;;
	    *)
		dumplevel=1
	esac
	;;
    1)
	dumplevel=3
	;;
    2)
	dumplevel=2
	;;
    3)
	dumplevel=5
	;;
    4)
	dumplevel=4
	;;
    5)
	dumplevel=7
	;;
    6)
	dumplevel=6
	;;
    7)
	dumplevel=9
	;;
    8)
	dumplevel=8
	;;
    *)
	dumplevel=9
esac

# Вычислить сегодняшний номер дня в цикле $PERIOD0.
case $seq in
    $PERIOD0)
	seq=1
	;;
    *)
	seq=$(($seq + 1))
esac

DUMPDATE=`date +%Y%m%d`
HOSTNAME=`hostname -s`

echo "Day $seq, make level $dumplevel dump of all FS's at `date`"
echo
umask 027

# Список файлов для уведомления нулевого дампа.
notify=0
notify_files=""

for fs in $ALLFS; do
    # Преобразовать имя файловой системы в файл, куда будет
    # производится dump.
    dumpfile=""
    case $fs in
	/)
	    basefile="$HOSTNAME"
	    ;;
	*)
	    basefile="$HOSTNAME`echo $fs | sed 's!/!_!g'`"
    esac
    dumpfile="$DUMPSTORAGE/${basefile}-${DUMPDATE}-${dumplevel}.${DUMPEXT}"
    dump -${dumplevel}aLu -f - -h 0 $fs | gzip > $dumpfile

    # Удалить старые дампы этой файловой системы.
    #
    # Здесь берется список файлов, отсортированный по именам в
    # обратном порядке (т.к. в именах присутствует дата, то
    # получается, что они отсортированы по дате), и из его начала
    # удаляется указанное кол-во строк. Это позволяет получить список
    # файлов за исключением N последних.
    #
    # Как конечный результат, хранятся N последних дампов
    # определенного уровня.
    #
    case $dumplevel in
	0)
	    notify=1
	    notify_files="${notify_files}\n${dumpfile}"
	    ;;
	1)
	    # Хранить дампов 1-го уровня столько, сколько их делается
	    # между дампами 0-го уровня.
	    #
	    keepdumps=$(($PERIOD0 / $PERIOD1 - 1))
	    ls -r ${DUMPSTORAGE}/${basefile}-????????-1.${DUMPEXT} \
		| sed -e "1,${keepdumps}d" | xargs rm -f --
	    ;;
	[2-9])
	    # Для дампов 2-9 уровня хранится столько последних дампов,
	    # сколько их делается в промежутке между дампами меньшего
	    # уровня.
	    #
	    keepdumps=$(($PERIOD1 - 1))
	    ls -r ${DUMPSTORAGE}/${basefile}-????????-[2-9].${DUMPEXT} \
		| sed -e "1,${keepdumps}d" | xargs rm -f --
	    ;;
    esac
done

echo $seq > $DUMPSTORAGE/dumpseq
sudo umount "$DUMPSTORAGE"
echo
echo "Dump is over at `date`"

# Послать уведомление о необходимости записи нулевого дампа на DVD.
case $notify in
    1)
	{ cat ~root/dumpallfs-notify.txt; echo -e "$notify_files"; } \
	    | sendmail -i root
	;;
esac

Ziggy Stardust
Advanced member
Сообщения: 327
Зарегистрирован: 15 сен 2007, 13:23
Откуда: Екатеринбург
Контактная информация:

Сообщение Ziggy Stardust » 28 мар 2008, 15:21

Переписал скриптец под себя.
Месячный цикл: L0...L9, L1...L9, L2...L9 ... и т.д.
Привожу целиком. Может кому поможет.
Запускать по крону ежедневно.

Код: Выделить всё

#! /bin/sh
#
# Создание резервной копии всех файловых система хоста.
#
# $Id: dumpallfs.sh 2008-03-26 $
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

# Список файловых систем, dump которых необходимо делать.
FSTODUMP="da0s1a da0s1d da0s1f da0s1g"

# Список каталогов, для который делаем только L0 дамп.
DIRTONODUMP="/opt/tmp /opt/squid/cache"

# Префикс dump файла.
DUMPPREFIX="SERVERNAME"

# Суффих dump файла.
DUMPEXT="dump.gz"

# Текущая дата
CURDATE="`date "+%Y-%m-%d"`"

# В этом каталоге сохраняются бэкапы.
DUMPSTORAGE="/mnt/backup"

# Сколько дней будем хранить файлы с дампами.
DAYTOSTORAGE="100"

# Минимум свободного места на ресурсе, куда будем сохранять дампы (в мегобайтах).
STORAGELIMIT="20480"

# Вычисляем сколько сейчас свободного места на ресурсе.
STORAGESPACE="`df -m ${DUMPSTORAGE} |grep -v 'Avail' |awk '{print $4}'`"

# Проверяем наличие ресурса, где храним дампы.
if [ ! -d "${DUMPSTORAGE}" ]; then
        echo "There is no ${DUMPSTORAGE} directory."
        exit 1
fi

# Проверяем наличие свободного места на ресурсе
if [ ${STORAGESPACE} -le ${STORAGELIMIT} ]; then
        echo "There is no free space on ${DUMPSTORAGE} directory."
        exit 1
fi

# Пометим выше выбранные каталоги флагом NODUMP
for i in ${DIRTONODUMP}; do
    chflags -R nodump ${i}
done

# Вычислить сегодняшний уровень дампа на основе текущего дня месяца.
CURDAY="`date "+%d"`"

case "${CURDAY}" in
    01)
	dumplevel=0
	;;
    02)
	dumplevel=1
	;;
    03 | 11)
	dumplevel=2
	;;
    04 | 12 | 19)
	dumplevel=3
	;;
    05 | 13 | 20 | 26)
	dumplevel=4
	;;
    06 | 14 | 21 | 27)
	dumplevel=5
	;;
    07 | 15 | 22 | 28)
	dumplevel=6
	;;
    08 | 16 | 23 | 29)
	dumplevel=7
	;;
    09 | 17 | 24 | 30)
	dumplevel=8
	;;
    10 | 18 | 25 | 31)
	dumplevel=9
	;;
    *)
	dumplevel=9
esac

echo "Day ${CURDAY}, make level $dumplevel dump of all FS's at `date`"
echo "System `uname -n`"
echo

for fs in ${FSTODUMP}; do
    dumpfile="${DUMPSTORAGE}/${DUMPPREFIX}_${fs}_${CURDATE}_L${dumplevel}.${DUMPEXT}"
    dump -${dumplevel}aLu -f - /dev/${fs} | gzip > ${dumpfile}
done

echo
echo "Dump is over at `date`"

# Удаляем старые файлы.
find ${DUMPSTORAGE} -type f -mtime +${DAYTOSTORAGE}d -name ${DUMPPREFIX}*.${DUMPEXT} -delete

exit 0

Krolist
Junior member
Сообщения: 1
Зарегистрирован: 15 фев 2012, 09:00
Откуда: Сочи

Re: BackUp системы: FreeBSD + dump + ???

Сообщение Krolist » 15 фев 2012, 09:10

всем привет!
вот смотрю и думаю...
а чем этот метод лучше чем tar -cf /dir1 /dir2 ?....
в архив перенесутся и права на файлы... что еще нужно.
при крахе нужно будет только установить минимальный FreeBSD и скопировать архив.
или я ошибасюь?

Вот я сейчас как раз занимаюсь такой настройкой архивирования в tar.
Хочу иметь на флешке Freebsd с уже установленными нужными программами и настройками для установки на мои новые сервера в будущем.... а то надоедает... одни и те же настройки каждый раз делаю... да еще каждый раз что нить забываю настроить...
Главное компиляция очень долгий процесс по сравнению с копированием ))
Алгоритм при устновке будет такой:
1) устанавливаем минимальную FreeBsd
2) извлекаем папки из архива tar в установленную системы
3) reboot = готово

Ziggy Stardust
Advanced member
Сообщения: 327
Зарегистрирован: 15 сен 2007, 13:23
Откуда: Екатеринбург
Контактная информация:

Re: BackUp системы: FreeBSD + dump + ???

Сообщение Ziggy Stardust » 15 фев 2012, 09:16

Инкрементальностью лучше. И тем, что бэкап со снапшота файловой системы идет. А вообще конечно еще лучше специализированным софтом бэкапить, тем же симантеком хотя бы...
С уважением, Александр
ICQ://13043204

Аватара пользователя
kim_aa
Advanced member
Сообщения: 118
Зарегистрирован: 24 ноя 2011, 16:30
Откуда: Санкт-Петербург
Контактная информация:

Re: BackUp системы: FreeBSD + dump + ???

Сообщение kim_aa » 16 фев 2012, 12:34

1) FreeBSD поддерживает NetBackup, а вот BackupEXEC вряд ли.

2) Для "бедных с руками" есть Bacula
http://bacula.org/en/?page=documentation
Кстати, прописывание в скриптах клиента резервного копирования вызовов утилит создания дампов - есть стандартная практика для резервного копирования СУБД которые официально не поддерживаются системой резервного копирования.

Ответить

Вернуться в «Серверы - ПО, Unix подобные системы»