Регулярное резервное копирование публичной части второго сайта с помощью cron

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

  1. site1.ru
  2. site2.ru

Версия Битрикс 14.9.4, как оказалось, на этой версии Битрикс не делает бэкап публичной части сайта site2.ru, с первым проблем нет, может это косяк, не знаю, но времени разбираться некода, исправим это недоразумение.


Настройка регулярного резервного копирования в Битрикс

Делать регулярное резервное копирование сайтов на Битрикс будем так:

  1. Для сайта site1.ru будет делаться полная резервная копия сайта, включая ядро Битрикс и БД, но исключим всякие логи, кеши, статистику и прочее.
  2. Для сайта site2.ru будем делать резервную копию только публичной части, т.е. исключаем из резервной копии символьные ссылки на папки /bitrix/ и /upload/ и исключаем БД.

При такой настройке резервные копии будут создаваться отдельно для каждого сайта, размер их будет минимальный, вот так:

Резервные копии сайтов при регулярном резервном копировании Битрикс многосайтовость

Хочу обратить внимание, что в моем случае для сайта site1.ru исключена из резервной копии папка /upload/, т.к. она размером почти 10Гб и бэкапить ее каждый раз нет смысла, этут папку будем ежедневно синхронизировать на локальном копьютере, поэтому размер полной резервной копии небольшой.
О синхронизации и бэкапах сайта на локальный компьютер  я расскажу в следующий раз.

Вот так будет выглядеть форма  настроек скрипта периодического запуска для site1.ru (полное резервное копирование сайта)

Настройка скрипта периодического запуска резервного копирования Битрикс


У Вас настройки должны быть точно такие, кроме раздела настроек Удаление старых копий, т.е. когда удалять старые резервные копии настройте как удобно в Вашем случае, можете оставить такими, не забудьте сохранить настройки.


Настройка на сервере задачи cron

Далее, на сервере в консоли или в панели управления сервером необходимо добавить задачу для cron, которая в указанное время будет запускать скрипт резервного копирования, в моем случае это панель vesta, в ней команды запуска скрипта выглядят так:

Задача cron для запуска php-скипта резервного копирования

Обратите внимание на файлы резервного копирования, для сайта site1.ru я взял стандартный файл бэкапа Битрикс:

	 /bitrix/modules/main/tools/backup.php

и переименовал в backup_site1.php, чтобы не запутаться в следующий раз, что куда бекапит, это стандартный скрипт backup.php.


А вот для сайта site2.ru мне нужно бэкапить только его публичную часть, если посмотрите на форму настроек бэкапа Битрикс выше, то там нет возможности отключить для второго сайта бэкап БД, ядра и т.д.
Для этого я скопировал опять срипт бэкапа backup.php и переименовал в backup_site2.php, далее настроил под себя:

  1. В файле необходимо задать префикс сайта, чтобы повлиять на имя архива.

    2014-12-26_01-41-51.png

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

  2. Ну и задать настройки бэкапа вручную осталось, т.к. скрипт backup.php берет настройки из формы на сайте, все настройки в массиве $arExpertBackupDefaultParams, такие:

     $arExpertBackupDefaultParams = array(
    'dump_base' => 0, //Отключаем бэкап БД
    'dump_base_skip_stat' => 0,//статистику
    'dump_base_skip_search' => 0,//поисковый индекс
    'dump_base_skip_log' => 0,//журнал событий
    'dump_file_public' => 1,//Архивировать публичную часть
    'dump_file_kernel' => 0,//Архивировать ядро
    'dump_do_clouds' => 0,//Отключаем бэкап в облако
    'skip_mask' => 1,//Исключить из архива файлы и директории по маске - Включаем для надежности
    'skip_mask_array' => array('/bitrix','/upload'),//Это те самые папки исключения (маски)
    'dump_max_file_size' => 0,//Исключить из архива файлы размером более (0 - без ограничения)
    'skip_symlinks' => 1,//Пропускать символические ссылки на директории
    );

Все готово, теперь и многосайтовость при регулярном резервном копировании будет учтена, резервные копии будут по полочкам в наименьшем виде: Резервные копии сайтов при регулярном резервном копировании Битрикс многосайтовость


О синхронизации бэкапов и самой большой папки сайта /upload/ на свой ПК я расскажу Вам чуть позже, там даже все сайты сможете на локальный ПК синхронизировать и бэкапить, инструменты сейчас есть для этого хорошие.

Прикрепил готовый скрипт резервного копирования с комментариями, где и что изменить, достаточно в одном месте задать префикс для свогео сайта и все.
Скачать скрипт периодического запуска резервного копирования Битрикс 14.9.4: backup_site2.rar
Имя *
Логин (мин. 3 символа)
E-mail *
*— обязательные для заполнения поля
Логин или e-mail
TUNING-SOFT.RU Разработка умных веб-сервисов