Перейти к содержимому

Резервное копирование - расписание, состав, хранение и проверка

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

Решение

Смотрим, что уже сделано и сколько занимает:

Окно терминала
ls -lht /home/bitrix/www/bitrix/backup/ | head -10
du -sh /home/bitrix/www/bitrix/backup/ # копии съедают место того же диска
df -h /home/bitrix
# место кончится первым у копий: они растут вместе с каталогом

Копии на том же диске, что и сайт, - это лишь половина решения. Они спасают от ошибки администратора и неудачного обновления, но не от отказа самого диска или потери сервера целиком.

Настраиваем расписание и состав копии:

COption::SetOptionString('main', 'backup_period', '86400'); // раз в сутки
COption::SetOptionString('main', 'backup_files', 'Y');
COption::SetOptionString('main', 'backup_database', 'Y');
COption::SetOptionString('main', 'backup_exclude_mask', '/bitrix/cache/;/bitrix/managed_cache/');

Кэш, статистика и прежние копии в архиве не нужны: они восстанавливаются сами и раздувают файл в несколько раз. База в копии нужна всегда - без неё одни только файлы сайта бесполезны.

Проверяем, что копию можно скачать:

Окно терминала
# большой архив не скачивается через браузер: упирается во время ответа
ls -lh /home/bitrix/www/bitrix/backup/*.tar.gz | tail -3
scp server:/home/bitrix/www/bitrix/backup/latest.tar.gz ./ # надёжнее браузера

Скачивание копии через админку работает только на небольших сайтах. Архив в несколько десятков гигабайтов забирают по защищённому копированию или сразу отдают во внешнее хранилище.

Отправляем копии наружу:

// внешнее хранилище настраивается в модуле облачных хранилищ
COption::SetOptionString('main', 'backup_to_cloud', 'Y');
COption::SetOptionString('main', 'backup_cloud_bucket', $bucketId);
COption::SetOptionString('main', 'backup_files_count', '3'); // сколько копий хранить
// копия, лежащая на том же сервере, не спасает от его потери

Копия становится настоящей страховкой только тогда, когда лежит не на том же сервере. Внешнее хранилище решает эту задачу штатно, и настраивают его один раз при запуске сайта.

Проверка копии - это пробное восстановление, а вовсе не размер файла. Раз в квартал копию разворачивают на тестовом сервере и открывают сайт: только так становится видно, что архив полный, а база внутри него согласована.

Отдельная копия перед рискованной операцией стоит пяти минут и снимает главный риск. Обновление платформы, массовая правка каталога, смена версии PHP - все эти работы начинают со свежей копии, не полагаясь на ночное расписание.

Срок хранения задают числом копий, а не расплывчатым «навсегда». Две-три последние копии плюс одна недельная закрывают большинство сценариев, а бесконечный архив съедает диск и в итоге роняет сам сайт.

Типичные проблемы

Копии перестали создаваться.

Кончилось место на диске или не работают агенты. Копирование выполняет агент, и без него расписание не действует.

Архив не скачивается через админку.

Он слишком велик для передачи через браузер. Такие копии забирают с сервера напрямую или отправляют в облако.

Копия есть, а восстановиться из неё не получается.

В архив не попала база или он оборвался на середине. Проверяют только пробным восстановлением.

Резервные копии заняли весь диск.

Не ограничено число хранимых копий. Старые не удаляются сами, если это не задано настройкой.

Архив вырос в разы без роста сайта.

В него попали кэш и старые копии. Их исключают маской из состава копии.

Частые вопросы

Как часто делать копии?

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

Хватит ли копии базы без файлов?

Нет: картинки, свой код и шаблоны лежат в файлах. База без них восстанавливает данные, но не работающий сайт.

Можно ли делать копию средствами хостинга?

Да, и это надёжнее в плане хранения. Штатная копия удобнее тем, что разворачивается скриптом восстановления на любом сервере.

Что делать перед рискованной операцией?

Снимать копию вручную, не полагаясь на ночное расписание. Обновление платформы и правка базы - как раз такие случаи.

Смежное

Первоисточник