Резервное копирование - расписание, состав, хранение и проверка
Настраиваем регулярные копии сайта и проверяем, что из них действительно можно восстановить работающий сайт.
Решение
Смотрим, что уже сделано и сколько занимает:
ls -lht /home/bitrix/www/bitrix/backup/ | head -10du -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 -3scp 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 - все эти работы начинают со свежей копии, не полагаясь на ночное расписание.
Срок хранения задают числом копий, а не расплывчатым «навсегда». Две-три последние копии плюс одна недельная закрывают большинство сценариев, а бесконечный архив съедает диск и в итоге роняет сам сайт.
Типичные проблемы
Копии перестали создаваться.
Кончилось место на диске или не работают агенты. Копирование выполняет агент, и без него расписание не действует.
Архив не скачивается через админку.
Он слишком велик для передачи через браузер. Такие копии забирают с сервера напрямую или отправляют в облако.
Копия есть, а восстановиться из неё не получается.
В архив не попала база или он оборвался на середине. Проверяют только пробным восстановлением.
Резервные копии заняли весь диск.
Не ограничено число хранимых копий. Старые не удаляются сами, если это не задано настройкой.
Архив вырос в разы без роста сайта.
В него попали кэш и старые копии. Их исключают маской из состава копии.
Частые вопросы
Как часто делать копии?
Магазину с заказами - ежедневно, витрине без изменений - раз в неделю. Ориентир простой: сколько данных не жалко потерять между копиями.
Хватит ли копии базы без файлов?
Нет: картинки, свой код и шаблоны лежат в файлах. База без них восстанавливает данные, но не работающий сайт.
Можно ли делать копию средствами хостинга?
Да, и это надёжнее в плане хранения. Штатная копия удобнее тем, что разворачивается скриптом восстановления на любом сервере.
Что делать перед рискованной операцией?
Снимать копию вручную, не полагаясь на ночное расписание. Обновление платформы и правка базы - как раз такие случаи.
Смежное
- Резервные копии и перенос - оглавление подтемы
- Не создаётся резервная копия - разбор причин
- Перенос сайта на другой сервер - что делают с готовой копией
- Сервер и поиск - устройство сервера целиком
- Восстановление из резервной копии: порядок, отказы, проверка - разворот копии и проверка её пригодности
- Защита сайта на практике - что закрыть в первую очередь
- Облачное хранилище и CDN: подключение, перенос, копии - что копия не заберёт из облака