Сайт Романа ПарпалакаБлог20110803

Простое резервное копирование

3 августа 2011 года, 20:12

Давайте я вам расскажу, как работает резервное копирование (бекап) на моем сервере. Самая ценная информация хранится в базе данных. Помимо этого есть еще код движка в репозитории subversion, который бы не хотелось потерять. Их и будем архивировать.

Поскольку объем данных небольшой, в пределах нескольких мегабайт, а гигабайты свободного места в почтовом ящике пустуют, там я и решил хранить резервные копии.

Сначала напишем небольшой скрипт, архивирующий данные и отправляющий их на почту. Вот что у меня получилось:

#!/bin/bash
DATE="`date +%Y-%m-%d_%H-%M-%S`"
SVN="s2-backup_$DATE.svn.7z"
MYSQL="mysql-backup_$DATE.sql.7z"

svnadmin dump /path/to/project -q | 7za a -si -p123asd $SVN
mysqldump -ubackup -p123asd --all-databases | 7za a -si -p123asd $MYSQL

echo Backups for $DATE | biabam $SVN,$MYSQL -s "Backups $DATE" mail@example.com

[ -n "$1" ] && [ "$1" = delete ] && ( rm $SVN ; rm $MYSQL )

Сразу замечу, что «123asd» нужно заменить в каждом месте на правильный пароль.

В первых трех строчках мы составляем из текущей даты имена файлов с архивами.

В следующих двух строчках архивируем репозиторий и дамп базы данных. Тут нужно вписать правильный путь до репозитория subversion, а также имя и пароль существующего пользователя базы данных. Используемые здесь архивы 7z компактнее zip, gz и др. На архивы нужно поставить пароль подлиннее, чтобы избавиться от симптомов паранойи по поводу хранения конфиденциальной информации на серверах Гугла.

В предпоследней строчке мы отправляем архивы на электронную почту (не забудьте вписать свою). Программа biabam (вообще-то, это не полноценная программа, а bash-скрипт) отправит наши архивы как прикрепленные файлы.

Последнюю строчку я добавил для управления судьбой созданных архивов после отправки письма. Чтобы их удалить, скрипт нужно вызывать с параметром delete. Этот параметр используется при автоматическом запуске скрипта с помощью cron (параметры ниже соответствуют ночному запуску два раза в неделю):

15  3   *   *   0,3  ~/backup/backup.sh delete > /dev/null

В этом случае нужно удалять файлы, чтобы не занимать место на сервере. А если перед ответственными манипуляциями я запускаю скрипт без параметров, архивы не удаляются, и в случае необходимости данные можно сразу же восстановить.

Вы можете взять этот пример за основу и добавить архивирование другой ценной информации.

Поделиться

Градиент на сайте Яндекса Ctrl Формирование вкуса

Читайте также

Delphi и EPS
Векторная графика В этой статье мы рассмотрим простой программный способ создания векторных изображений.
2009
Как покрыть тестами устаревший код?
Многим разработчикам приходилось поддерживать и дорабатывать устаревшие приложения, в которых никогда не было автотестов. С помощью приемочных тестов библиотеки Codeception можно покрыть веб-приложение на любом фреймворке и даже на любых языках.
2023
Про Linode, written.ru и S2
Давно я не писал о хостинге. Не писал, потому что с хостингом у меня до недавнего времени ничего не менялось.
2010
Прокси-сервер через ssh
Полезная вещь в современных условиях — прокси-сервер через ssh.
2022

Оставьте свой комментарий


Формулы на латехе: $$f(x) = x^2-\sqrt{x}$$ превратится в $$f(x) = x^2-\sqrt{x}$$.
Выделение текста: [i]курсивом[/i] или [b]жирным[/b].
Цитату оформляйте так: [q = имя автора]цитата[/q] или [q]еще цитата[/q].
Других команд или HTML-тегов здесь нет.

Записи