Коротко: резервное копирование сайта – это регулярное сохранение файлов и базы данных в место, не зависящее от основного сервера. Храните копии отдельно от хостинга: в облаке, на SFTP-сервере или на отдельном виртуальном сервере, например в дата-центре Contell. Создавайте их автоматически по расписанию и проверяйте, что сайт из архива разворачивается.

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

Резервное копирование сайта

Что такое бэкап сайта и что в него должно входить

Из чего состоит полная копия

Бэкап сайта – копия данных, из которой ресурс можно развернуть заново. Резервное копирование файлов и базы данных идет в паре. В полную копию входят три компонента.

  • Файлы – код, шаблоны, плагины, картинки. Без них сайт не запустится.
  • База данных – тексты, товары, заказы. Без нее сайт будет пустым.
  • Конфигурация – .htaccess, wp-config.php, cron-задачи. Без нее придется настраивать все вручную.

Копия только файлов или только базы неполная – целиком сайт из нее не поднять. Готовый архив с файлами и дампом базы не оставляйте на сервере сайта – его удобно сразу отправлять на отдельное облачное FTP-хранилище. По ссылке можно узнать, как подключить такое хранилище по FTP: https://contell.ru/oblachnoe-ftp-hranilishche/. На конструкторах вроде Tilda копией обычно занимается сам сервис.

Когда бэкап спасает сайт

  • взлом – возврат к версии до заражения;
  • неудачное обновление CMS или плагина – откат;
  • сбой или закрытие хостинга – запуск на новой площадке;
  • ошибка разработчика – правка сломала шаблон;
  • случайное удаление страницы, файла или таблицы.

С копией сайт возвращают за минуты, без нее – заново собирают неделями.

Виды резервного копирования: полное, инкрементное, дифференциальное

Для резервного копирования сайта применяют три вида копий.

  • Полное – копируются все файлы и вся база. Из такой копии проще восстановиться, но она тяжелее. Подходит небольшим сайтам.
  • Инкрементное – копируются только изменения с прошлой копии. Экономит место, но для восстановления нужна вся цепочка копий. Подходит крупным сайтам.
  • Дифференциальное – копируются изменения с последней полной копии. Это компромисс между первыми двумя вариантами, подходит сайтам среднего размера.

Небольшому сайту хватит ежедневных полных копий, крупному – полной раз в неделю и ежедневных инкрементных. Снапшот VPS не заменяет бэкап, он обычно лежит в той же инфраструктуре.

Где хранить резервные копии сайта

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

Правило 3-2-1 – минимум надежного хранения: три копии на двух типах носителей, одна вне основной площадки. Для сайта это рабочая версия, архив на сервере и внешняя копия. Схема 3-2-1-1-0 добавляет неизменяемую (immutable) копию, которую нельзя удалить даже с правами администратора, и ноль ошибок при проверке восстановления. Неизменяемость защищает от шифровальщиков, добирающихся до бэкапов по сети. Малому бизнесу достаточно 3-2-1.

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

Сравнение мест хранения

  • Хранилище хостинга – уже настроено, но гибнет вместе с сайтом. Годится только как первый уровень защиты.
  • Облачный диск – прост в настройке, есть бесплатный объем, но действуют лимиты. Подходит небольшим сайтам.
  • S3-хранилище – масштабируется под любой объем, но требует настройки. Подходит магазинам.
  • FTP-хранилище – дает полный контроль над данными, но сервер нужно администрировать. Подходит тем, кто работает с сервером.
  • Локальный диск – бесплатный вариант, но зависит от устройства. Подходит как дополнительная копия.

Где хранить бэкапы сайта, зависит от риска потери. FTP-хранилище – отдельный сервер, где место и защиту обеспечиваете вы, а облачное хранилище для резервных копий берет это на себя, но привязывает к тарифам. Для передачи берите SFTP, обычный FTP шлет пароль открытым текстом. По 152-ФЗ базы с персональными данными россиян хранят в России, поэтому копии держите там же и шифруйте.

Как настроить автоматическое резервное копирование

Автоматическое резервное копирование сайта – это создание копий по расписанию без участия человека. Выберите способ под свой хостинг и систему управления.

Через панель хостинга

В ISPmanager, cPanel, Beget и Timeweb есть раздел резервных копий.

  1. Откройте раздел резервных копий.
  2. Включите расписание и задайте срок хранения.
  3. Запустите тестовую копию и убедитесь, что она появилась в списке.

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

WordPress – UpdraftPlus и Duplicator

  1. Установите и активируйте плагин UpdraftPlus.
  2. В настройках плагина задайте расписание – файлы раз в день или неделю, базу чаще.
  3. Выберите удаленное хранилище, например Google Drive, Dropbox или S3, набор зависит от версии плагина.
  4. Сохраните настройки и авторизуйтесь в выбранном сервисе.
  5. Нажмите Backup Now и проверьте, что архив появился во внешнем хранилище.

Duplicator нужен прежде всего для переноса сайта.

1С-Битрикс и другие CMS

  • В 1С-Битрикс есть встроенный инструмент (Настройки → Инструменты → Резервное копирование), его запуск по расписанию настраивают через cron.
  • Для Joomla, OpenCart и MODX берите расширения из официального каталога CMS.
  • Порядок настройки уточняйте в документации своей версии.

Свой скрипт для VPS: mysqldump, tar/rsync и cron

#!/bin/bash

DIR=/backups/$(date +%F)

mkdir -p "$DIR"

# доступы к базе берутся из ~/.my.cnf

mysqldump --single-transaction dbname > "$DIR/db.sql"

tar -czf "$DIR/files.tar.gz" --exclude=cache /var/www/site

rsync -az "$DIR" backup@storage.example.com:/backups/

find /backups -mindepth 1 -maxdepth 1 -mtime +7 -exec rm -rf {} \;

Запуск каждую ночь в 3:00: 0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Логин и пароль базы храните в ~/.my.cnf с правами 600, а не в тексте скрипта, и используйте отдельного пользователя БД, не root. Для rsync настройте вход по SSH-ключу.

Уведомления и контроль

  • письмо или сообщение в Telegram-бот после каждой копии и при ошибке;
  • лог-файл с результатом запуска;
  • принцип «нет уведомления – бэкап сломан».

Как часто делать бэкапы и сколько хранить

Частота резервного копирования сайта зависит от того, как часто он меняется.

  • Лендинг с формами – ежедневно, хранить 14–30 дней.
  • Интернет-магазин – ежедневно и после правок каталога, хранить 30–60 дней.
  • Блог или корпоративный сайт – 1–2 раза в неделю, хранить 30 дней.
  • Сайт-визитка – раз в неделю, хранить 14–30 дней.

Схема ротации – 7 ежедневных, 4 еженедельных и 3–6 ежемесячных копий. Перед обновлением CMS, плагинов или правкой кода делайте отдельную копию. Несколько поколений нужны потому, что взлом могли заметить не сразу, а последняя копия уже заражена.

Как восстановить сайт из резервной копии

Быстрое восстановление через панель или плагин

Восстановление сайта из резервной копии проще всего начать с панели или плагина. Если копию создал хостинг, откройте раздел резервных копий, выберите дату и запустите восстановление – панель вернет файлы и базу. В WordPress с UpdraftPlus откройте вкладку Existing Backups, выберите архив и нажмите Restore. После взлома сначала убедитесь, что копия сделана до заражения, иначе вернете вирус вместе с сайтом.

восстановление из резервной копии

Ручное восстановление: файлы и база данных

  1. Включите заглушку и сохраните текущее состояние сайта, даже поврежденное.
  2. Распакуйте архив с файлами в корневую папку сайта.
  3. Создайте пустую базу или очистите старую и импортируйте дамп через phpMyAdmin либо консоль.
  4. Проверьте доступы к базе в конфиге, для WordPress это wp-config.php.
  5. Проверьте права на файлы и папки, обычно 644 и 755.
  6. При смене хостинга или домена обновите адрес сайта в базе и DNS-записи.
  7. Очистите кэш сайта и CDN.

Импорт из консоли – mysql -u user -p dbname < dump.sql

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

Что проверить после восстановления

  • главная и внутренние страницы открываются без ошибок;
  • работает вход в админку;
  • работают формы, корзина и оформление заказа;
  • SSL-сертификат действителен;
  • в robots.txt и мета-тегах нет запрета индексации, он бывает после переноса с тестового домена;
  • работают почта и cron-задачи.

Если восстанавливались после взлома, смените пароли и ключи (админка, FTP, база, секретные ключи в конфиге), обновите CMS и плагины и найдите уязвимость, иначе взлом повторится.

Как проверить, что бэкап рабочий

Система резервного копирования сайта считается рабочей только после тестового восстановления.

  1. Скачайте свежий архив из внешнего хранилища.
  2. Разверните его на поддомене или локальном сервере.
  3. Проверьте сайт и базу данных.
  4. Удалите тестовую копию.

Магазины проверяйте раз в месяц, остальные сайты раз в квартал. Бэкап, который ни разу не восстанавливали, остается предположением.

Что делать, если бэкапа нет или сайт взломали

  1. Запросите копию у хостера – часть провайдеров хранит собственные бэкапы несколько дней.
  2. Не перезаписывайте поврежденные файлы, по ним еще можно собрать данные.
  3. Поищите тексты в веб-архиве, кэше поисковиков, выгрузках и почте с заявками.
  4. При взломе изолируйте сайт, смените доступы и привлеките специалиста. Как распознать взлом, описано в статье о признаках взлома сайта.

Затем в тот же день настройте автоматические копии.

Заключение

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

  • копии создаются автоматически;
  • хранятся вне основного сервера;
  • включены уведомления;
  • восстановление проверено;
  • настроена ротация;
  • копия делается перед обновлением.

Частые вопросы о резервном копировании

Достаточно ли бэкапов хостинга?

Нет. Они лежат рядом с сайтом и пропадут при отказе сервера или сбое у провайдера, нужна внешняя копия.

Нужен ли бэкап для сайта на конструкторе?

Данные хранит сервис, но контент выгрузите сами на случай блокировки аккаунта или закрытия проекта.

Как защитить бэкапы от вируса-шифровальщика?

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

Можно ли настроить бэкап бесплатно?

Да. Хватит плагина UpdraftPlus, облачного диска с бесплатным объемом или скрипта с cron на своем сервере.

Автор статьи: Дмитрий С., технический специалист Contell

Специалист в сфере информационных технологий, серверной инфраструктуры и центров обработки данных. Разбирается в вопросах размещения и эксплуатации серверного оборудования, обеспечения надежности IT-систем, сетевых технологий и организации бесперебойной работы цифровых сервисов.