И снова я расскажу как избавить вас от головной боли.
Сегодня мы поговорим о том, о чем вспоминают только тогда, когда уже становится поздно: резервная копия сайта.
Обычно когда про неё вспоминают, сайт уже взломали/начинили вирусами или вовсе удалили. Я сам попадал в подобные ситуации и мне хочется дать вам понять какие превентивные меры помогут сберечь ваши нервы и волосы на голове.
Сегодня я хочу рассказать о том как я подхожу к вопросу создания и хранения резервных копий интернет магазинов:
- Что из себя представляют резервные копии?
- Истории спасения;
- Как сделать резервные копии?
- Где и как их хранить?
- Важные вопросы и ответы;
- Заключение.
Что такое резервная копия (бэкап) сайта интернет магазина?
Чтобы ответить на этот вопрос, давайте сначала рассмотрим из чего обычно состоит современный сайт.
База данных.
Все современные CMS для интернет магазина уже давно работают с базами данных, в которых хранится вся основная информация. В десятках, а то и в сотнях таблиц базы данных лежит информация о покупателях, товарах, категориях, статьях и всем том, что необходимо для полноценного функционирования сайта.
Файлы CMS.
А это уже просто файлы с программным кодом CMS, фотографиями ваших товаров и многим другим.
В процессе работы сайта идет постоянная связь между CMS и базой данных. Например, когда вы запрашиваете историю заказов покупателя, то программный код CMS делает запрос в базу данных, а та, в свою очередь, возвращает данные, которые вы и видите на своем экране.
Таким образом, становится очевидно, что сайт не сможет работать при отсутствии базы данных. И в этом случае будет примерно такая ошибка:
И точно так же база данных абсолютно бесполезна при отсутствии файлов CMS.
Вывод: резервная копия сайта интернет магазина представляет собой набор файлов CMS и копию базы данных.
И в случае если вы “случайно” удалите сайт, вам нужно будет просто заново залить файлы CMS на FTP и переустановить базу данных. Если следовать инструкции, это занимает обычно не более 10 минут.
Несколько страшилок
Только реальные случаи из моей практики.
История первая. “Мститель”
После длительной разработки сайта, куда было вбухано большое количество денег, владелец решил сменить разработчика из-за того, что постоянно рвались сроки. Разработка велась на хостинге владельца.
Владелец самостоятельно сменил пароли от FTP, админки и панели администрирования хостинга. Но он забыл поменять пароль от базы данных сайта. Этой лазейкой и воспользовались горе-разработчики в качестве своеобразной мести за то, что им не была выплачена до конца сумма за сайт, создание которого они сами и провалили.
Так как резервные копии не делались, долго и упорно восстанавливалась база данных. На это было потрачено дополнительных 3 недели. Бэкапы на стороне хостинга были совсем устаревшими и не смогли помочь.
История вторая. “Невидимка”
Эта история случилась уже с сайтом, имеющим более 2000 уникальных посетителей в день. Злоумышленниками был внедрен хитроумный код, который срабатывал только в том случае, если пользователь заходил на сайт со своего iPad. Подобным пользователям показывались рекламные блоки, которые невозможно было увидеть с обыкновенного компьютера.
Заметили это быстро, так как владелец заходил на свой сайт через iPad
В итоге, вместо глубокого погружения в дебри исходного кода сайта и выпиливания вредоносного кода была просто выгружена копия сайта недельной давности с предварительной проверкой на наличие уязвимости. Да, часть заказов и новых товаров потерялась, но большую часть данных сохранили. CMS обновили до последней версии, все пароли поменяли. Пока подобного больше не повторялось.
История третья. “Недопереехали”
Здесь вообще комическая ситуация, которая привела к большим потерям. Как временным, так и финансовым. Задача из разряда простейших – перенести сайт с одного хостинга на другой.
Как это обычно делается: выгружаются файлы вместе с базой данных и затем разворачиваются на новом хостинге на тестовом домене. Как только все удостоверяются в том, что все работает как надо, меняют настройки домена для перенаправления посетителей на новый хостинг. Старый же хостинг продолжает работать еще как минимум неделю для того чтобы принимать посетителей, у которых не сразу обновился DNS.
Как это было сделано в том случае: данные перенесли со старого хостинга на новый. Я подчеркиваю, что именно перенесли, а не скопировали. В итоге по пути что-то сломалось и база данных отказывалась вставать на новый хостинг, выдавая кучу ошибок. На старый хостинг она, впрочем, тоже уже не хотела устанавливаться . Так как резервных копий не было, сайт некоторое время работал с ошибками, которые в течение месяца все-таки починили.
Вывод из всех этих историй: резервная копия всегда страхует от внештатных ситуаций и человеческого фактора.
Как сделать резервную копию сайта интернет магазина?
Практически для каждой CMS есть свои модули для создания резервных копий, но я хочу поделиться простым способом как это сделать самостоятельно и не привлекая других специалистов.
Основной минус этого способа: ручной режим и отсутствие автоматизации, но об автоматизации мы поговорим позже
Делаем бэкап базы данных сайта
Данный способ на 100% подходит всем тем, у кого сайт находится на простом хостинге без выделенных серверов. В примере показано решение этой задачи на базе веб панели хостинга Hetzner, который я все очень сильно рекомендую.
Если у вас другой хостинг, то меняется лишь способ попадания в систему управления вашей базой данных phpMyAdmin. Если сами не сможете найти, то служба техподдержки вашего хостинга с легкостью подскажет как туда попасть.
Шаг 1. Заходим в веб панель хостинга.
(клик на любом изображении для увеличения)
Шаг 2. После захода в настройки вашего хостинга Hetzner, выберите ваш домен и перейдите в раздел с базами данных.
Шаг 3. Выбирайте базу данных для создания резервной копии. И затем кликайте на phpMyAdmin.
Шаг 4. Кликните на “Экспорт”.
Начиная с этого шага не имеет значения какой у вас хостинг – phpMyAdmin у всех примерно одинаковый.
Шаг 5. Оставьте настройки по умолчанию и кликните на “ОК”.
Шаг 6. Начнется скачивание вашей базы данных и в результате скачается файл название_вашей_базы_данных.sql
Поздравляю, вы только что сделали резервную копию вашей базы данных! Теперь перейдем к созданию резервной копии ваших файлов.
Делаем бэкап файлов сайта интернет магазина
Одной базы данных нам недостаточно для создания полноценной резервной копии сайта, поэтому еще необходимо сделать бэкап самих файлов сайта.
Так как у каждого хостинга своя панель управления, то попытаюсь дать рецепт, который должен подойти всем.
Шаг 1. Установите FTP клиент на свой компьютер.
Если он у вас уже установлен, то можете смело пропускать этот шаг.
FTP клиент необходим для того, чтобы получить доступ к файлам, которые хранятся у вас на сервере. Обычно я использую для этого программу FileZilla, которую вы можете бесплатно скачать на их официальном сайте. Скачайте, установите программу на свой компьютер и переходите к следующему шагу.
Шаг 2. Уточните данные для доступа к FTP серверу, где хранится ваш сайт.
Обычно данные для подключения к серверу хостинга хранятся во соответствующем разделе панели хостинга: “FTP”. Если вы испытываете сложности с их поиском, обратитесь к техподдержке вашего хостинга.
Данные для доступа к серверу выглядят обычно следующим образом:
Сервер: ftp.ваш_хостинг.ru
Логин: <ваш_логин>
Пароль: <ваш_пароль>
Шаг 3. Настройте соединение с вашим хостингом.
Вот скриншот настройки FTP доступа в FileZilla для наглядности:
Шаг 4. Подключаемся к хостингу и ищем папку public_html, именно в ней содержатся файлы вашего сайта.
Если такой папки у вас на хостинге нет, то возможны несколько ситуаций:
- Вы используйте FTP аккаунт, не имеющий доступа к корневой папке вашего хостинга;
- Ваш хостер не использует папку с таким именем (хотя мне такие случаи не попадались);
- Какая-то другая причина.
Если отсутствует уверенность в том, что вы работаете с файлами именно вашего сайта, то опять же можно обратиться в службу техподдержки вашего хостинга, который сможет вас сориентировать.
Шаг 5. Копируем файлы.
Просто кликните правой кнопкой на нужную папку и нажмите “Скачать”.
Как только процесс скачивания закончится, могу вас поздравить – вы создали резервную копию файлов вашего сайта и базы данных.
Внимание!!! После скачивания резервных копий базы данных и файлов сайта не забудьте поместить их в один архив. Именно этот архив и поможет полностью восстановить сайт в случае необходимости.
Следующим шагом мы правильно организуем их хранение.
Как правильно хранить резервные копии?
Главное правило: не хранить все в одном месте!!!
А теперь подробнее…
Вариант №1. Непосредственно на хостинге.
Да, нет ничего проще, чем полученный архив загрузить обратно на хостинг. Проще всего будет просто создать папку “backup” и загружать туда архивы.
Но имейте ввиду, что одного этого недостаточно, так как если злоумышленники доберутся до ваших файлов, то они не забудут уничтожить и ваши бэкапы.
Вариант №2. Свой собственный компьютер.
В принципе, довольно-таки надежный вариант, который поможет сильно ограничить доступ к этим файлам. Если паранойя не дает вам спать, то можно держать архивы на самом компьютере плюс на внешнем жестком диске. Не забывайте обновлять архивы по мере появления новых.
Вариант №3. Облачное хранение.
Большинство из вас, наверняка, слышало о таких сервисах как Dropbox (рекомендую именного его), Google Drive и Яндекс.Диск. Эти сервисы позволяют хранить файлы на облачных серверах, к которым вы можете получить доступ из любого места где есть интернет. И каждый из этих сервисов предоставит вам бесплатное место для хранения нескольких резервных копий.
Я рекомендую использовать все три способа и это не занимает много времени. В среднем, уходит 5-15 минут на подготовку и размещение всех резервных копий. Думаю, что один раз в неделю у вас получится выделить столько времени, но зато и спать спокойно.
Важные вопросы и ответы
А мне подойдет изложенный в статье метод?
Я показал метод подготовки резервной копии сайта, который подойдет практически всем владельцам небольших и средних интернет магазинов. Достаточно иметь доступ к FTP и к phpMyAdmin (база данных).
А возможна ли автоматизация?
Да, возможна. Специальные скрипты могут делать бэкапы по заданному графику и загружать их туда, куда вы укажете. Способ в статье не предполагает автоматизации, но у меня и не было цели подобное описать.
У меня популярная CMS. Может есть готовые модули?
Не исключаю. Для всех наиболее популярных CMS есть модули, позволяющие сделать бэкап. Это, например, очень удобно сделано в Битриксе: одним кликом бэкап создается и загружается в облачное хранилище на серверах Битрикса.
Важно!
НЕ ПОЛЕНИТЕСЬ СДЕЛАТЬ РЕЗЕРВНУЮ КОПИЮ ПРЯМО СЕЙЧАС!!!
Действительно, не поленитесь прямо сейчас/сегодня/в течение недели сделать резервную копию своего интернет магазина. Вот прямо сейчас возьмите и запланируйте эту задачу. И, быть может, когда-нибудь вы вспомните меня и скажете спасибо за то, что я вас приучил к созданию резервных копий сайта вашего интернет магазина.
Кстати, если у вас есть интересные истории по теме, буду рад услышать
Людмила #
09.04.2014 в 9:15С первых строк чувствуется, что Вы профи в своем деле.
Наталья #
09.04.2014 в 18:39Спасибо огромное, просто ОГРОМЕННОЕ за такую полезную статью!!! Уже записала себе задание в ежедневник!)))
Я даже и понятия не имела, что такое есть и к каким последствиям может привести отсутствие резервной копии.
Андрей Родионов #
10.04.2014 в 9:28Наталья, не затягивайте с этим делом :)
вазген фарух машунбаевич #
23.04.2014 в 20:50да
Евгений #
25.04.2014 в 8:07Бекап CMS MAGENTO занимает пол дня)))
А так – гуд! как обычно!
asta la vista #
30.04.2014 в 5:48Прекрасно
Ждем статью про важность посещения уроков арифметики будущими владельцами интернет-магазинов, т.к. это напрямую вляет на количество будущей прибыли
Артур #
03.05.2014 в 18:34Много чего было связанные с бекапами. Одно время, мне надоело вот так вручную все это делать, и плюс в нашем агентстве сотрудник тратил на это достаточное количество времени.
Задался я вопросом, как автоматизировать данный процесс.
И в итоге нашел, что можно сделать.
Бекап можно делать и файлов, и баз данных. Скидывать в облачное хранилище.
Я нашел очень дешевые тарифы у selectel.ru – http://selectel.ru/services/cloud-storage/
Для одного интернет-магазина выходит примерно 13-15 рублей за месяц. Бекапятся каждые 5 дней. Размер архива примерно 100-130 Мб.
Можно написать скрипт, который будет делать бекапы файлов (или файлы + базы данных) и скидывать по FTP в облачное хранилище.
Вот тут немного об этом написано – http://blog.selectel.ru/rezervnoe-kopirovanie-v-oblachnoe-xranilishhe/
Думаю можно найти программиста, который все это поймет и реализует. Реализация недорогая, тарифы на хранилище – недорогие.
Андрей Родионов #
02.06.2014 в 18:38Артур, большое спасибо за подробную информацию! :)
Alex #
19.06.2014 в 8:43спасибо, полезно
Андрей Родионов #
19.06.2014 в 13:49И вам спасибо.
Тата #
04.07.2014 в 18:55Отлично. Если Вы такой профи, подскажите пожалуйста как сделать резервную копию интернет магазина на Netcat? мне его сдали в аренду и доступа к хостингу я не имею. Есть доступ только к админ панели. Хотела внести кое какие изменения в дизайн, но боюсь испортить что нибудь, а каждый раз обращаться к владельцам по пустякам – уже надоело.
Андрей Родионов #
13.10.2014 в 14:30Тата, решить подобный вопрос вам помогут в техподдержке платформы, на которой построен ваш интернет магазин.
Roman #
22.05.2015 в 9:49Что касается Magento, то не рекомендуется делать резервные копии базы данных с помощью PhpMyAdmin, могут быть проблемы при восстановлении. Их нужно делать с помощью функционала самой системы Система – Инструменты – Резервные копии.
Александра #
11.12.2015 в 20:26Спасибо большое за такую полезную статью! Нашла на вашем сайте огромную поддержку в создании своего интернет-магазина. Излагаете информацию крайне доступно. Читала другие статьи, которые были довольно информативными, но были написаны сложным языком. У вас же все просто и ясно, спасибо!
Андрей Родионов #
12.01.2016 в 13:25Александра, спасибо!
Аноним #
26.11.2018 в 12:51Спасибо Вам. Даже такой чайник как я смогла сделать бэкап сайта, сама! У вас суперский блог, Андрей, я перечитала все ваши статьи. Очень жду новых. Вы такой молодец. Спасибо!