Previous Entry Share Next Entry
cesbo.com: создание бэкапов (часть 1)
and_cesbo
Пользователи делятся на две категории: те, которые еще не делают бэкапов, и те, которые уже делают.

В связи с запуском vds-сервера для размещения всех своих проектов, появилось множество различных задач.
Одна из первых задач: система создания бэкапов.
Вся система состоит из трёх частей:
  1. бэкап скриптов и конфигов обеспечивающих работу сервера.
  2. бэкап исходного кода сайта и всех проектов
  3. бэкап данных (базы данных, статика)
 
1. Бэкап скриптов и конфигов
Данный тип данных изменяется редко и общий объём незначительный. Принял простое решение: создать архив и отправить на почту. Скрипт автоматизирующий эти действия:
#!/bin/bash
 
ARCHIVE="/tmp/etc.backup.gz"
TO="sendto@mail"
SUBJ="etc backup $(date '+%d%m%Y')"
 
if [ $UID -ne 0 ] ; then
    echo "Error: you must be root" >&2
    exit 1
fi
 
grep -e "^#F/" ${0} | sed 's/#F//' | while read FNAME ; do
	if [ -d ${FNAME} ] ; then
		find ${FNAME} -xtype f
	elif [ -f ${FNAME} ] ; then
		echo ${FNAME}
	else
		echo "Warning: file ${FNAME} no found" >&2
	fi
done | cpio -o -H tar --quiet | gzip -9c >${ARCHIVE}
 
: | mail -s "${SUBJ}" -a ${ARCHIVE} ${TO}
rm -f ${ARCHIVE}
 
#F/usr/bin/etc.backup
 
#F/etc/ssh/sshd_config
#F/etc/network/if-pre-up.d/iptables
#F/etc/iptables.rules

Перед запуском в скрипте необходимо отредактировать переменную TO (адрес email, на который будут отправленны данные).
Скрипт при запуске читает сам себя и ищет строки начинающиеся на #F - это и есть файлы которые необходимо сохранить в архив. (/usr/bin/etc.backup - это сам скрипт). Если после #F указан каталог, то он сканируется и все файлы в этом каталоге и его подкаталогах будут добавленны в архив.
После формирования, архив отправляется на email с помощью комманды mail (mail - только формирует письмо, для его доставки необходим MTA (mail transfer agent), я использую msmtp привязанный к аккаунту на gmail.com

2. Бэкап исходного кода сайта и всех проектов
Тут всё просто. На bitbucket.org созданы приватные репозитории. Все проекты клонируются на локальный репозиторий и на bitbucket. Пока всё в ручную: commit, push, push

3. Бэкап данных
Пока нет острой необходимости (на данный момент, сайт находится в разработке и базы ещё нет).
Предварительно решил использовать Amazon S3. Опишу во второй части :)

  • 1
Great, I never knew this, thanks.


  • 1
?

Log in

No account? Create an account