Настройка сервера архивации Drupal сайтов на базе rsnapshot

Опубликовано admin - ср, 07/17/2013 - 20:49

В продолжение статьи о восстановлении MySQL cегодня опишу настройку сервера для архивации сайтов на базе rsnapshot.

Постановка задачи

Необходимо архивировать все сайты на поддержке,требования:
1) Удобная и быстрая настройка
2) Архивы должны хранится 7 дней и быть циклическими.
3) Решили что классическая архивация с помощью rsync и mysqldump надежней

Реализация

Раньше у нас уже был опыт решения подобной задачи, написали кучу скриптов на bash'e в результате процесс настройки был сложноват. На этот раз решили пойти другим путем, а именно воспользоваться программой rsnapshot, которая в свою очередь может удовлетворить все наши требования без какого-либо страшного программирования.

Настройка

Теперь после небольшой вводной части можно перейти непосредственно к настройке. Настройку выполняем на Debian 7.

Установка rsnapshot достаточно проста:

aptitude install rsnapshot

Настраиваем общий конфиг для всех сайтов /etc/rsnapshot.common, наша версия конфига выглядит так:

#################################################
# rsnapshot.conf - rsnapshot configuration file #
#################################################
#                                               #
# PLEASE BE AWARE OF THE FOLLOWING RULES:       #
#                                               #
# This file requires tabs between elements      #
#                                               #
# Directories require a trailing slash:         #
#   right: /home/                               #
#   wrong: /home                                #
#                                               #
#################################################

#######################
# CONFIG FILE VERSION #
#######################

config_version	1.2

###########################
# SNAPSHOT ROOT DIRECTORY #
###########################

# All snapshots will be stored under this root directory.
#
snapshot_root	/var/snapshots/

#################################
# EXTERNAL PROGRAM DEPENDENCIES #
#################################

# LINUX USERS:   Be sure to uncomment "cmd_cp". This gives you extra features.
# EVERYONE ELSE: Leave "cmd_cp" commented out for compatibility.
#
# See the README file or the man page for more details.
#
cmd_cp		/bin/cp

# uncomment this to use the rm program instead of the built-in perl routine.
#
cmd_rm		/bin/rm

# rsync must be enabled for anything to work. This is the only command that
# must be enabled.
#
cmd_rsync	/usr/bin/rsync

# Uncomment this to enable remote ssh backups over rsync.
#
cmd_ssh	/usr/bin/ssh

# Comment this out to disable syslog support.
#
cmd_logger	/usr/bin/logger

# Uncomment this to specify the path to rsnapshot-diff.
#
cmd_rsnapshot_diff	/usr/bin/rsnapshot-diff

#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################

retain		daysago	7

############################################
#              GLOBAL OPTIONS              #
# All are optional, with sensible defaults #
############################################

# Verbose level, 1 through 5.
# 1     Quiet           Print fatal errors only
# 2     Default         Print errors and warnings only
# 3     Verbose         Show equivalent shell commands being executed
# 4     Extra Verbose   Show extra verbose information
# 5     Debug mode      Everything
#
verbose		2

# Same as "verbose" above, but controls the amount of data sent to the
# logfile, if one is being used. The default is 3.
#
loglevel	3

# If you enable this, data will be written to the file you specify. The
# amount of data written is controlled by the "loglevel" parameter.
#
logfile	/home/admin/log/rsnapshot.log

# If enabled, rsnapshot will write a lockfile to prevent two instances
# from running simultaneously (and messing up the snapshot_root).
# If you enable this, make sure the lockfile directory is not world
# writable. Otherwise anyone can prevent the program from running.
#
lockfile	/home/admin/rsnapshot.pid

# Default rsync args. All rsync commands have at least these options set.
#
rsync_short_args	-avz
rsync_long_args	--delete --numeric-ids --delete-excluded --chmod=a+rwx,g+rwx

Для каждого сайта добавляем конфигурационный файл в папке ~/config, например /home/user/config/drupal-admin.ru:

#Подключение общего файла конфигурации
include_conf	/etc/rsnapshot.common
#Архивация папки сайта
backup	user@drupal-admin.ru:~/domains/drupal-admin.ru/html/	drupal-admin.ru/
#Архивация базы данных
backup_script	/usr/bin/ssh user@drupal-admin.ru mysqldump -uuser -ppassword --default-character-set=utf8 drupal-admin.ru > drupal-admin.sql	drupal-admin.ru/mysql

Теперь создаем общий файл конфигурации rsnapshot ~/backup_allsites, в который добавляем все файлы сайтов, например:

include_conf    /home/user/config/drupal-admin.ru
include_conf    /home/user/config/supportsite1.ru
include_conf    /home/user/config/supportsite2.ru

После этого добавляем задание cron команда crontab -e:

#Архивация сайтов ежедневно в 00:30
30 00 * * * /usr/bin/rsnapshot -c /home/user/backup_allsites daysago
#Сжатие всех каталогов архивов сайтов ежедневно в 00:59 и отправка отчета на email
59 00 * * * /usr/local/bin/rsnaptar support@initlab.ru

Теперь у нас всё готово. Архивы делаются ежедневно и есть архив сайтов за 7 дней.

Добавить комментарий

Filtered HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.
  • Web page addresses and email addresses turn into links automatically.