За 20 лет я видел десятки ситуаций, когда отсутствие бэкапа превращало мелкую проблему в катастрофу. Хостинг потерял данные. Разработчик случайно удалил таблицу в базе. Сайт взломали и залили вредоносный код во все файлы. Каждый раз одно и то же: «А бэкап есть?» — «Нет…»

Резервные копии — это не та задача, которую можно отложить на потом. Рассказываю, как организовать бэкапы правильно.

Почему хостинг-бэкапов недостаточно

Первое, что говорят клиенты: «У меня хостинг делает бэкапы». Да, большинство хостеров это делают. Но:

  • Бэкапы хранятся на том же сервере. Если сервер упадёт физически — и сайт, и бэкапы потеряны одновременно.
  • Частота — раз в сутки или реже. Если вы обновляете сайт 3 раза в день, последний бэкап может быть вчерашним.
  • Восстановление — через тикет в поддержку. Среднее время ответа хостинга — 2-4 часа. Для критичного сайта — вечность.
  • Хостинг не гарантирует целостность. В TOS большинства хостеров написано, что бэкапы — не гарантия.

Хостинг-бэкап — это последний рубеж обороны, не основной.

Что бэкапить

Сайт — это не только файлы. Полный бэкап включает:

Файлы сайта

Код CMS, темы, плагины, загруженные изображения и документы. На WordPress это папки wp-content, wp-includes, корневые файлы. На MODX — core, assets, connectors.

База данных

Самая ценная часть. Посты, страницы, товары, комментарии, настройки — всё в базе. Потеря базы = потеря контента.

Конфигурация сервера

.htaccess, nginx.conf, cron-задачи, настройки PHP. Обычно забывают, а потом не могут понять, почему после восстановления «что-то не так».

SSL-сертификаты и ключи

Если используете кастомный сертификат (не Let’s Encrypt) — его тоже нужно бэкапить.

Как часто делать бэкапы

Зависит от того, как часто меняется сайт:

Ежедневно — минимум для любого сайта, который хоть как-то используется. База данных + файлы.

Каждые 6 часов — для интернет-магазинов и сайтов с активным контентом. Заказы, комментарии, новые товары — всё это добавляется в течение дня.

В реальном времени (инкрементально) — для крупных проектов, где потеря даже часа данных критична. Обычно через WAL-архивирование для PostgreSQL или бинлоги MySQL.

Перед каждым обновлением — обязательно. Перед обновлением CMS, установкой плагина, изменением кода — делаю снапшот. Если что-то пойдёт не так — откат за минуты.

Моё правило: ежедневный автоматический бэкап + ручной перед любым изменением.

Где хранить бэкапы

Главный принцип: бэкап на том же сервере — не бэкап. Это просто копия файла, которая погибнет вместе с оригиналом.

Правило 3-2-1

Классика, которая работает:

  • 3 копии данных
  • На 2 разных носителях (сервер + облако, например)
  • 1 копия вне площадки (другой дата-центр, другой провайдер)

Где конкретно

  • Облачное хранилище — S3 (Amazon, Yandex, Selectel), Google Cloud Storage. Надёжно и недорого.
  • Отдельный VPS — если хотите полный контроль. Арендуете дешёвый сервер в другом дата-центре.
  • FTP/SFTP на стороне — старый, но рабочий вариант. Многие хостеры дают FTP-доступ для бэкапов.

Стоимость хранения — копейки. 50 ГБ в Yandex Object Storage — меньше 100 ₽/мес. Это ничто по сравнению с ценой потери данных.

Сколько хранить бэкапы

Типичная схема ротации:

  • Ежедневные — последние 14-30 дней
  • Еженедельные — последние 3 месяца
  • Ежемесячные — последний год

Зачем хранить старые бэкапы? Потому что проблему не всегда замечаешь сразу. Взлом мог произойти месяц назад — и вредоносный код попал во все свежие бэкапы. Нужна «чистая» копия.

Как проверять бэкапы

Бэкап, который нельзя восстановить, — бесполезный файл. Проверяю регулярно:

  • Автоматическая верификация — скрипт проверяет целостность архива после создания
  • Тестовое восстановление — раз в месяц разворачиваю бэкап на тестовом сервере и проверяю, что сайт работает
  • Мониторинг — если бэкап не создался (ошибка, нехватка места) — получаю уведомление

Звучит как паранойя? Нет. Это стандартная практика. Я видел «бэкапы», которые оказывались пустыми архивами, повреждёнными файлами, или копиями без базы данных.

Инструменты для бэкапов

WordPress

  • UpdraftPlus — популярный плагин, умеет отправлять в облако. Бесплатная версия покрывает базовые потребности.
  • BlogVault — платный, но с автоматическим staging и инкрементальными бэкапами.
  • WP-CLI + cron — для тех, кто предпочитает скрипты. Максимум контроля.

MODX

Встроенных средств мало. Использую серверные скрипты:

  • mysqldump для базы данных
  • rsync для файлов
  • Cron для автоматизации
  • Отправка в S3 через aws cli или rclone

Универсальные

  • Duplicati — бесплатный, с шифрованием и дедупликацией
  • Restic — быстрый, с инкрементальными бэкапами
  • Bacula — для серьёзной инфраструктуры

Типичные ошибки

«Бэкап настроен — можно забыть». Нельзя. Диск заполнился, скрипт сломался, пароль к облаку протух — и бэкапы тихо перестали работать.

«Бэкаплю только файлы». Без базы данных файлы бесполезны. Контент, настройки, заказы — всё в БД.

«Храню на том же хостинге». Сервер сгорел — и оригинал, и бэкап.

«Бэкап раз в неделю — достаточно». Для сайта-визитки — возможно. Для интернет-магазина — потеря недели заказов.

«Никогда не проверял восстановление». Бэкап существует, но никто не знает, работает ли он.

Бэкапы и безопасность

Бэкапы — часть комплексной защиты сайта. Если сайт взломали:

  1. Определяю дату взлома
  2. Нахожу «чистый» бэкап (до взлома)
  3. Восстанавливаю
  4. Закрываю уязвимость, через которую проникли
  5. Проверяю, что вредоносного кода нет

Без бэкапов шаг 2 невозможен — и приходится чистить сайт вручную. Это дольше, дороже и менее надёжно.

Стоимость бэкапов vs стоимость потери данных

Настройка автоматических бэкапов с хранением в облаке обходится в 500–2 000 ₽/мес. Восстановление сайта без бэкапа после взлома — от 50 000 ₽. Восстановление после потери базы данных без копии — иногда невозможно вообще.

Математика очевидная. Бэкапы — самая дешёвая страховка из всех возможных.

Итого

Резервные копии — базовая гигиена. Как замок на двери: не гарантирует от всего, но без него вообще нельзя.

Минимум:

  • Ежедневные бэкапы файлов и базы
  • Хранение вне основного сервера
  • Проверка восстановления раз в месяц

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

Автор материала

Антон Ветров Разработка сайтов, поисковая доступность, автоматизация и эксплуатация.