Обновление движка и модулей: как ничего не сломать
Вопрос «обновляться или не трогать, пока работает» знаком каждому владельцу сайта. Одни откладывают обновления годами и однажды получают взломанный…
Резервная копия сайта похожа на страховку: пока всё хорошо, о ней не вспоминают, а когда случается беда, выясняется, что копии нет, она устарела или не открывается. Мы видели проекты, потерявшие месяцы работы из-за одного неудачного обновления и одного неаккуратного движения в админке. Рассказываем, как построить стратегию копирования, которая реально работает, а не просто существует на бумаге.
Многие думают, что копии нужны на случай взлома. Это лишь одна из причин, и далеко не самая частая. Вот список ситуаций, в которых владельцам приходилось обращаться к архиву.
Заметьте: в большинстве пунктов злоумышленников нет. Это обычные рабочие риски, и они случаются у всех, кто достаточно долго ведёт сайт.
Сайт состоит из нескольких частей, и копировать нужно каждую из них. Типичная ошибка: сохранить только файлы или только базу, а потом выяснить, что по отдельности они бесполезны.
Сюда входят код движка, шаблон оформления, установленные модули, настройки и загруженные материалы: изображения товаров, документы, видео. Загруженные материалы часто занимают больше всего места и меняются чаще всего, поэтому именно с ними возникают сложности.
В базе лежит всё содержимое: товары, цены, заказы, клиенты, тексты страниц, настройки, история. Потеря базы означает потерю сайта, даже если файлы целы. Для магазина база данных самая ценная часть, потому что заказы и данные покупателей невозможно воссоздать.
Менее очевидная часть: версии программного обеспечения на сервере, настройки веб-сервера, задания по расписанию, правила перенаправлений, настройки почты и сертификатов. Без этих сведений восстановление на новом сервере превращается в долгое выяснение, как всё было устроено. Достаточно вести краткий документ с перечнем настроек и актуальными версиями.
Не забывайте про данные, которые живут вне сайта, но влияют на него: выгрузки из учётной системы, прайс-листы поставщиков, файлы для обмена с маркетплейсами, доступы к внешним сервисам. Список таких зависимостей стоит записать заранее, а не вспоминать в момент аварии.
В профессиональной среде давно используется простая формула: три копии данных, на двух разных видах носителей, одна из которых хранится в другом месте. Для сайта это означает следующее.
Самая распространённая ловушка: копии создаёт сам хостинг и хранит на том же сервере. Это удобно для быстрой отмены ошибки, но не спасает при проблемах с аккаунтом или с самим сервером. Автоматические копии хостинга хороши как дополнение, но не как единственная защита.
Частота зависит от того, как быстро меняются данные и сколько работы вы готовы потерять. Ключевой вопрос такой: за сколько времени вы можете позволить себе потерять данные? Если магазин принимает десятки заказов в день, потеря суток равна десяткам потерянных заказов. Для сайта-визитки, который не меняется месяцами, достаточно гораздо более редкого копирования.
| Тип проекта | База данных | Файлы | Хранение |
|---|---|---|---|
| Сайт-визитка, редкие правки | Раз в неделю | Раз в неделю и перед любыми правками | Несколько последних копий |
| Корпоративный сайт с блогом | Ежедневно | Ежедневно или раз в несколько дней | Ежедневные за последние недели, плюс несколько более старых |
| Интернет-магазин с заказами | Несколько раз в день или ежедневно плюс журнал изменений | Ежедневно, изображения инкрементально | Многоуровневое: ежедневные, еженедельные, ежемесячные |
| Крупный каталог с обменом из учётной системы | Часто, с возможностью восстановления на момент времени | Ежедневно | Многоуровневое, с отдельным архивом |
Хранить только последнюю копию опасно. Если проблема возникла три дня назад, а вы заметили её сегодня, свежая копия уже содержит ошибку. Разумная схема: последние ежедневные копии за одну-две недели, еженедельные за пару месяцев, ежемесячные за полгода или больше. Так вы можете отмотать назад на разную глубину, при этом не храня бесконечный архив.
Полная копия содержит всё, и восстанавливаться из неё проще всего, но она занимает много места и долго создаётся. Инкрементальная сохраняет только изменения с прошлого раза. Практичный подход: полная копия раз в неделю и инкрементальные ежедневно. Для базы данных с активными заказами дополнительно полезен журнал изменений, который позволяет восстановить состояние на конкретный момент.
Это самая важная мысль статьи. Мы неоднократно сталкивались с ситуацией, когда копии создавались регулярно, но при попытке восстановления выяснялось, что архив повреждён, не содержит базу, пустой или не хватает свежих изображений. Задание успешно выполнялось месяцами, а результат никому не был нужен.
Чтобы этого избежать, проверяйте:
Пробное восстановление стоит проводить регулярно, например раз в квартал. Разверните копию на отдельном тестовом адресе и убедитесь, что сайт открывается, товары на месте, заказы видны, оформление не разъехалось. Заодно вы замерите, сколько времени занимает восстановление, и узнаете, чего не хватает в инструкции.
В момент аварии голова работает хуже, а времени мало. Поэтому порядок действий должен быть записан заранее и храниться не только на самом сайте. Ниже типовой план, который мы адаптируем под каждый проект.
Понять, что именно сломано: файлы, база, сервер или настройки. От этого зависит, что восстанавливать и из какой копии.
Перед откатом сделайте копию того, что есть сейчас, даже сломанного. Она пригодится для разбора причин и для возврата свежих заказов, пришедших после последней копии.
Определить момент, до которого всё работало, и взять копию непосредственно перед ним. Не всегда самая свежая копия самая подходящая.
Развернуть файлы и базу, проверить главные сценарии: открытие страниц, поиск, корзину, оформление заказа, письма, личный кабинет.
Проверить, какие заказы и изменения появились после копии, и перенести их вручную. Выяснить причину проблемы, чтобы она не повторилась.
Копии содержат те же ценные данные, что и сайт: клиентские базы, заказы, иногда персональные данные. Если архив попадёт к посторонним, ущерб будет таким же, как от взлома сайта. Поэтому к хранению нужен серьёзный подход.
Ориентируйтесь на объём сайта, умноженный на число хранимых копий, с поправкой на то, что инкрементальные копии занимают заметно меньше полных. Для магазинов с большим количеством изображений основной объём приходится на папку загрузок.
Да, если копии сделаны аккуратно. Можно вернуть отдельную таблицу базы, конкретный каталог файлов или один модуль. Это удобнее, чем откатывать всё и терять свежие заказы.
Зависит от размера и подготовки. Если процедура отработана и копии лежат под рукой, небольшой сайт возвращается за считанные часы. Без подготовки восстановление может растянуться на дни.
Конструктор обычно берёт копирование на себя, но возможности выгрузки и восстановления ограничены. Если проект для вас важен, выясните, как сохранить содержимое отдельно.
Мы настраиваем автоматическое резервное копирование для сайтов на разных движках, проверяем восстановление и берём контроль на себя в рамках технической поддержки. Если хотите проверить, как обстоят дела с копиями на вашем проекте, напишите нам через страницу контактов.
Вопрос «обновляться или не трогать, пока работает» знаком каждому владельцу сайта. Одни откладывают обновления годами и однажды получают взломанный…
Доменное имя это адрес вашего бизнеса в интернете. Его печатают на визитках, диктуют по телефону, пишут на упаковке и вставляют в рекламу. Сменить…
Стоит на сайте появиться форме обратной связи или корзине, как владелец начинает собирать персональные данные: имена, телефоны, адреса почты, адреса…