Понадобилось сегодня настроить регулярное резервное копирование двух сайтов на Битрикс с помощью задачи cron на сервере.
Например, на одном Битрикс, на одной админке настроена многосайтовость, два сайта:
- site1.ru
- site2.ru
Версия Битрикс 14.9.4, как оказалось, на этой версии Битрикс не делает бэкап публичной части сайта site2.ru, с первым проблем нет, может это косяк, не знаю, но времени разбираться некода, исправим это недоразумение.
Настройка регулярного резервного копирования в Битрикс
Делать регулярное резервное копирование сайтов на Битрикс будем так:
- Для сайта site1.ru будет делаться полная резервная копия сайта, включая ядро Битрикс и БД, но исключим всякие логи, кеши, статистику и прочее.
- Для сайта site2.ru будем делать резервную копию только публичной части, т.е. исключаем из резервной копии символьные ссылки на папки /bitrix/ и /upload/ и исключаем БД.
При такой настройке резервные копии будут создаваться отдельно для каждого сайта, размер их будет минимальный, вот так:
Хочу обратить внимание, что в моем случае для сайта site1.ru исключена из резервной копии папка /upload/, т.к. она размером почти 10Гб и бэкапить ее каждый раз нет смысла, этут папку будем ежедневно синхронизировать на локальном копьютере, поэтому размер полной резервной копии небольшой.
О синхронизации и бэкапах сайта на локальный компьютер я расскажу в следующий раз.
Вот так будет выглядеть форма настроек скрипта периодического запуска для site1.ru (полное резервное копирование сайта)
У Вас настройки должны быть точно такие, кроме раздела настроек Удаление старых копий, т.е. когда удалять старые резервные копии настройте как удобно в Вашем случае, можете оставить такими, не забудьте сохранить настройки.
Настройка на сервере задачи cron
Далее, на сервере в консоли или в панели управления сервером необходимо добавить задачу для cron, которая в указанное время будет запускать скрипт резервного копирования, в моем случае это панель vesta, в ней команды запуска скрипта выглядят так:
Обратите внимание на файлы резервного копирования, для сайта site1.ru я взял стандартный файл бэкапа Битрикс:
/bitrix/modules/main/tools/backup.php
и переименовал в backup_site1.php, чтобы не запутаться в следующий раз, что куда бекапит, это стандартный скрипт backup.php.
А вот для сайта site2.ru мне нужно бэкапить только его публичную часть, если посмотрите на форму настроек бэкапа Битрикс выше, то там нет возможности отключить для второго сайта бэкап БД, ядра и т.д.
Для этого я скопировал опять срипт бэкапа backup.php и переименовал в backup_site2.php, далее настроил под себя:
-
В файле необходимо задать префикс сайта, чтобы повлиять на имя архива.
Это условие сработает, если не установлены модули bitrixcloud и clouds, я их всегда удаляю, т.к. они не используюся на всех моих сайтах и сайтах клиентов, иначе сработают условия выше, но там название архива будет состоять из даты, должно сработать правильно.
-
Ну и задать настройки бэкапа вручную осталось, т.к. скрипт 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/ на свой ПК я расскажу Вам чуть позже, там даже все сайты сможете на локальный ПК синхронизировать и бэкапить, инструменты сейчас есть для этого хорошие.
Прикрепил готовый скрипт резервного копирования с комментариями, где и что изменить, достаточно в одном месте задать префикс для свогео сайта и все.