Дата последнего изменения: 30.12.2022
При разворачивании проектов на базе BitrixVM/BitrixEnv, часто встает задача создания резервной копии проекта по расписанию.
В BitrixVM/BitrixEnv есть функционал автоматического резервного копирования сайта и базы данных. Бекап будет создан по расписанию в виде архива .tar.gz и записан в директории /home/bitrix/backup/archive/
.
У данного способа есть как преимущества, так и недостатки в сравнении с встроенным в продукты «1С-Битрикс» механизмом создания резервной копии:
Для создания расписания автоматического резервного копирования средствами BitrixVM/BitrixEnv необходимо:
Если необходимо выполнить более точную настройку бэкапов, можно воспользоваться утилитой командной строки:
/opt/webdir/bin/bx-sites -a backup -d dbcp --enable --minute=10 --hour=18 --day=any --month=any --weekday=any
/etc/crontab
) добавляется задача резервного копирования проекта.
Бэкап делается для ядра (сайта типа kernel и ext_kernel) и всех его link, если такие существуют. Для этого создается задание в crontab-файле. Например:
10 22 * * * bitrix /opt/webdir/bin/bx_backup.sh sitemanager0 /home/bitrix/backup/archive
В качестве первой опции указывается имя БД, второй опцией указывается каталог, в котором будет создан архив.
В итоге скрипт создаст архив следующего вида: www_backup_
Внутри архива должны присутствовать следующие файлы:
/home/bitrix/mysql_dump__DD.MM.YYYY_.sql
-a|--action
- действие по управлению сайтами, в данном случае это backup-d|--database
- название БД (в бэкапе будут содержаться данные для всех сайтов, которые используют эту БД)--enable|--disable
- включение или отключение бэкапа для сайтов--minute
- параметры записи в crontab файле (минуты)--hour
- параметры записи в crontab файле (часы)--day
- параметры записи в crontab файле (день)--month
- параметры записи в crontab файле (месяц)--weekday
- параметры записи в crontab файле (день недели)В случае успешного выполнения утилита вернет новые опции для сайта:
/opt/webdir/bin/bx-sites -a backup -d sitemanager0 --enable --minute=10 --hour=23 --day=1 --month=any --weekday=any -o json | python -mjson.tool ... "BackupCronFile": "/etc/crontab", "BackupDay": "1", "BackupFolder": "/home/bitrix/backup/archive", "BackupHour": "23", "BackupMinute": "10", "BackupMonth": "*", "BackupTask": "enable", "BackupVersion": "v5", "BackupWeekDay": "*", ...
Ряд файлов/каталогов необходимо исключить из резервной копии. Список таких исключений можно найти в файле /opt/webdir/bin/ex.txt.
По умолчанию, в нем находятся следующие подкаталоги:
bitrix/cache bitrix/managed_cache bitrix/stack_cache bitrix/local_cache bitrix/backup bitrix/tmp upload/tmp upload/resize_cache
Как уже сказано выше, в бэкап включается:
/home/bitrix/mysql_dump_<db>.sql
);Например команда:
/opt/webdir/bin/bx_backup.sh sitemanager /home/bitrix/backup/archive
создает файл www_backup_sitemanager_30.01.2015_bnnW1NPm.tar.gz в директории /home/bitrix/backup/archive/
Для восстановления, нужно перейти в DocumentRoot ядра, выполнить:
tar xzvvf www_backup_dbvm04_22.08.2018_YBC0dLJe.tar.gz -rw-rw-r-- bitrix/bitrix 490 2017-11-22 17:46 ./telephony/lines.php -rw-rw-r-- bitrix/bitrix 543 2017-11-22 17:46 ./telephony/editgroup.php -rw-rw-r-- bitrix/bitrix 42 2017-11-22 17:46 ./telephony/.access.php -rw-rw-r-- bitrix/bitrix 496 2017-11-22 17:46 ./telephony/groups.php drwxrwxr-x bitrix/bitrix 0 2017-11-22 17:26 ./auth/ -rw-rw-r-- bitrix/bitrix 593 2017-11-22 17:26 ./auth/.left.menu.php -rw-rw-r-- bitrix/bitrix 534 2017-11-22 17:26 ./auth/index.php -rw-rw-r-- bitrix/bitrix 248 2017-11-22 17:26 ./auth/.section.php -rw-rw-r-- bitrix/bitrix 5794692 2018-08-22 16:29 home/bitrix/mysql_dump_dbvm04_22.08.2018_YBC0dLJe.sql drwxr-xr-x Creating directory: home drwxr-xr-x Creating directory: home/bitrix -rw-rw-r-- bitrix/bitrix 44 2018-08-22 16:29 home/bitrix/mysql_dump_dbvm04_22.08.2018_YBC0dLJe_after_connect.sql
После чего нужно восстановить БД:
mysql sitemanager0 < home/bitrix/mysql_dump_sitemanager_30.01.2015_bnnW1NPm_after_connect.sql
Аналогичной командой нужно восстановить файл mysql_dump_sitemanager_xxxx.sql.
Если копия восстанавливается на другом сервере, то пароль от БД в архиве не подойдет к новой БД, так как пароли генерируются случайным образом после установки новой виртуальной машины.
То есть после восстановления нужно сменить пароль от пользователя bitrix, который можно взять из /bitrix/.settings.php
после распаковки архива.
Сменить пароль можно SQL запросом:
SET PASSWORD FOR 'bitrix'@'localhost' = PASSWORD('ПАРОЛЬ');
Затем восстановите данные дополнительных сайтов, если они есть:
rsync -av home/bitrix/ext_www//home/bitrix/ext_www/
Далее удалите дамп базы данных.