В этой статье я расскажу вам как правильно установить на сервер или локальную машину Backup Manager.
Софт Время чтения: 6 минуты Просмотров: 578
Backup Manager — законченное открытое решение для организации резервного копирования на Linux и Unix хостах, умеет резервировать директории, базы данных MySQL, репозитории SVN. Резервирование происходит по расписанию через CRON, архивы создаются в отдельной директории и хранятся за указанный период, например неделю.
Опционально можно из локального резервного копирования сделать копирование на удалённый сервер, по FTP или SSH. Установить его довольно просто
sudo yum install backup-manager
Все настройки хранятся в одном конфигурационном файле, который и редактируем
sudo nano /etc/backup-manager.conf В данном примере нас будут интересовать следующие параметры.
#Директория для локального хранения резервных копий
export BM_REPOSITORY_ROOT="/var/archives"
#Владелец файлов и права доступа
export BM_REPOSITORY_USER="root"
export BM_REPOSITORY_GROUP="root"
export BM_REPOSITORY_CHMOD="770"
#Указываем типы архивирования: инкрементный бэкап
# и бэкап баз данных
export BM_ARCHIVE_METHOD="tarball-incremental mysql"
#Метод шифрования архивов — gpg — и ключ шифрования
export BM_ENCRYPTION_METHOD="gpg"
export BM_ENCRYPTION_RECIPIENT="MyName (Any text) (INSECURE!)"
#Тип архивов — tar.gz
export BM_TARBALL_FILETYPE="tar.gz"
#При архивировании backup-manager не будет следовать
# по символическим ссылкам
export BM_TARBALL_DUMPSYMLINKS="false"
#Собственно, то, что буде бэкапить. Перечисляем директории
# через пробел
export BM_TARBALL_DIRECTORIES="/etc /home/user0 /home/user1"
#Если в имени директории или файла есть пробел, то можно
# использовать массив
BM_TARBALL_TARGETS[0]="/path/with space"
BM_TARBALL_TARGETS[1]="/path/with space"
#Указываем исключения в случае необходимости (то, что не
# будем копировать)
export BM_TARBALL_BLACKLIST="/home/user0/blacklist"
#Настраиваем расписание резервного копирования. Мастер-бэкап
# (полная копия)
# будет создаваться каждую неделю, а инкрементные бэкапы —
# каждый день
export BM_TARBALLINC_MASTERDATETYPE="weekly"
export BM_TARBALLINC_MASTERDATEVALUE="1"
#Указываем базы данных MySQL, которые хотим сохранить (можно
# указать __ALL__ для бэкапа всех баз)
export BM_MYSQL_DATABASES="__ALL__"
#Данные для подключения к MySQL
export BM_MYSQL_ADMINLOGIN="mysqlusername"
export BM_MYSQL_ADMINPASS="mysqlpassword"
export BM_MYSQL_HOST="localhost"
export BM_MYSQL_PORT="3306"
#Метод сжатия дампов баз данных
export BM_MYSQL_FILETYPE="bzip2"
Сохраняем изменения в файле и проверяем
sudo backup-manager
Если все нормально, бэкапы создаются, то остается только добавить запуск backup-manager по расписанию в Cron
sudo nano /etc/crontab
Надо добавить строку вида
59 23 * * * root backup-manager
Установка backup-manager в CentOS
Качаем свежий пакет Backup Manager с http://www.backup-manager.org/download/
$ wget http://www.backup-manager.org/download/backup-manager-0.6.2.tar.gz
Распаковываем архив
$ tar -xzf backup-manager-0.6.2.tar.gz
$ cd backup-manager-0.6.2
Так как конфигурировать и компилировать тут нечего, инсталлируем
$ sudo bash
# make install
# cp /usr/share/backup-manager/backup-manager.conf.tpl /etc/backup-manager.conf
Конфигурируем
# nano /etc/backup-manager.conf
Мой конфиг:
#/usr/sbin/backup-manager
# Backup Manager файл конфигурации
#
# * Файл конфигурации разделён на секции.
# Секция 'global' обязательная, все остальные
# можно добавлять по желанию
# * Кроме этого есть по одной секции на каждый метод
# резервирования "backup method"
#
# Примечания:
# * пробелы в именах папок, баз, репозиториев недопустимы
#
##############################################################
##############################################################
# Repository - места хранения архивов
#############################################################
# Где хранить архивы
export BM_REPOSITORY_ROOT="/var/shurup"
# По соображениям безопасности все создаваемые архивы
# будут доступны на чтение и запись только для указанных
# ниже пользователя и группы. Опция рекомендуется в "true"
export BM_REPOSITORY_SECURE="true"
# пользователь и группа владельца архивов
export BM_REPOSITORY_USER="root"
export BM_REPOSITORY_GROUP="root"
##############################################################
# Archives - let's focus on the precious tarballs...
##############################################################
# Number of days we have to keep an archive (Time To Live)
export BM_ARCHIVE_TTL="182"
# Do you want to replace duplicates by symlinks?
# (archive-DAY is a duplicate of archive-(DAY - 1) if they
# are both the same size).
export BM_ARCHIVE_PURGEDUPS="true"
# Prefix of every archive on that box (default is HOSTNAME)
export BM_ARCHIVE_PREFIX="$HOSTNAME"
#
# Метод(ы) создания резервных копий:
# - tarball (полная копия каталогов, сжатая архиватором)
# - tarball-incremental (инкрементальная сжатая копия каталогов)
# - mysql (копия баз данных MySQL)
# - svn (копия svn репозиториев)
# - pipe (копия данных из вывода любой команды)
# - none (ничего не сохранять :)
# несколько методов пишутся через пробелы
export BM_ARCHIVE_METHOD="tarball mysql"
#
##############################################################
# Секция "TARBALL"
# - полная копия каталога, сжатая архиватором
#############################################################
# Формат имени файлов архивов
# long : host-full-path-to-folder.tar.gz
# short : parentfolder.tar.gz
export BM_TARBALL_NAMEFORMAT="long"
# Type of archives, available types are tar, tar.gz, tar.bz2, zip.
export BM_TARBALL_FILETYPE="tar.gz"
# Заменять все мягкие ссылки файлами (не рекомендуется)
export BM_TARBALL_DUMPSYMLINKS="false"
# Директории для резервирования (разделяются пробелом)
# Пример: export BM_TARBALL_DIRECTORIES="/etc /home"
# если каталогов много, проще их записать в столбик вот так:
##export BM_TARBALL_DIRECTORIES="/etc \\
##/usr/local/etc \\
##/usr/local/var/something1 \\
##/usr/local/var/something2 \\
##/usr/local/var/something3"
export BM_TARBALL_DIRECTORIES="/var/www"
# Files to exclude when generating tarballs
export BM_TARBALL_BLACKLIST=""
#
##############################################################
# tarball-incremental
# - инкрементальная сжатая копия каталога
#############################################################
# Как часто сохранять полную копию?
# Возможные значения: weekly (раз в неделю), monthly (раз в месяц)
export BM_TARBALLINC_MASTERDATETYPE="weekly"
# Номер дня в BM_TARBALLINC_MASTERDATETYPE (неделю или месяц),
# когда нужно сохранять полную копию
export BM_TARBALLINC_MASTERDATEVALUE="5"
# Пример: сохранять полную копию каждую пятницу:
# BM_TARBALLINC_MASTERDATETYPE="weekly"
# BM_TARBALLINC_MASTERDATEVALUE="5"
# Пример: сохранять полную копию 1 числа каждого месяца:
# BM_TARBALLINC_MASTERDATETYPE="monthly"
# BM_TARBALLINC_MASTERDATEVALUE="1"
##############################################################
# Backup method: MySQL
# - копия баз данных MySQL
#############################################################
# метод для резервирования баз данных MySQL.
#
# пожалуйста, не используйте tarball вместо MySQL,
# во избежание потери данных.
#
# Список баз данных
export BM_MYSQL_DATABASES="--all-databases"
####LIST="$(mysql -u root -pgfhfcjkmrf -Bse 'show databases')"
####LISTJOIN="${LIST[*]}"
####export BM_MYSQL_DATABASES=$LISTJOIN
# Пользователь MySQL, которому доступны на чтение все базы данных
export BM_MYSQL_ADMINLOGIN="root"
# Пароль этого пользователя
export BM_MYSQL_ADMINPASS="gfhfcjkmrf"
# Хост, на котором запущен MySQL
export BM_MYSQL_HOST="localhost"
# Порт, на котором запущен MySQL
export BM_MYSQL_PORT="3306"
# метод сжатия дампов баз данных (gzip или bzip2)
export BM_MYSQL_FILETYPE="gzip"
# Запустить эту команду после выполнения backup-manager (бэкапа).
export BM_POST_BACKUP_COMMAND="rename.sh"
Запуск производится командой:
#/usr/sbin/backup-manager
Настройка CRON:
1. Создать в папке /etc/cron.daily скрипт для запуска:
# nano /etc/cron.daily/backup-manager
с содержанием:
#!/bin/sh
/usr/sbin/backup-manager
############
Для разрешения запуска скрипта выполнить:
#cd /etc/cron.daily/
#chmod a+x backup-manager
nano /etc/cron.daily/backup-manager
#!/bin/sh
/usr/sbin/backup-manager --verbose
Для разрешения запуска скрипта выполнить:
#cd /etc/cron.daily/
#chmod a+x backup-manager
Ежедневный запуск, отключение отправки почтового отчета на локальный почтовый ящик и пересылка на почтовый ящик Shurupovert@gmail.com #crontab -e добавить строку: MAILTO="mymailto@gmail.com" @hourly /etc/cron.daily/backup-manager >/dev/null 2>&1 3.
Перезапустить демон
crond #/etc/init.d/cron restart
5. Создаем скрипт переименования дампов:
#nano /usr/sbin/rename.sh
#cd /usr/sbin/
#chmod a+x rename.sh
#gedit rename.sh
Вписываем содержание скрипта:
#/usr/sbin/rename.sh Размещение
#!/bin/sh
data=`date +%d.%m.%Y_%H-%M`
datat=`date +%Y%m%d`
host=`hostname`
cd /var/shurup?/
mv ${host}---all-databases.${datat}.sql.gz ${data}.${host}---all-databases.sql.gz
rm -r ${host}-${datat}.md5