Бэкап сайта — он же перенос WordPress на другой сайт

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

Как известно, люди делятся на два типа: те кто делает бэкапы и те, кто будет делать бэкапы.

И сейчас мы будем делать бэкап ))
Так как сие мероприятие подразумевает несколько этапов, составим план действий.
Какие-то из шагов потребуют более подробного рассмотрения, такие как Установка mysql на Centos 7 — напишу отдельно.

Итак, план следующий:

1. Перевести сайт в режим «обслуживания»

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

Создаём файл .maintenance, кладём его в корневую директорию WordPress, туда, куда вы клали файлы с кодами отслеживания Гугла и Яндекса при установке счётчиков посещаемости
В файле пишем следующее:

<?php $upgrading = time();

Вот так, без закрывающих команд. Всё, теперь на всех страницах будет красоваться следующая надпись:
«Сайт ненадолго закрыт на техническое обслуживание. Зайдите через минуту.»

Неудобство такого способа состоит в том, что закрытыми являются сплошь все страницы, даже админка.
Если же по каким-то причинам доступ к админке всё-таки нужен — идем в каталог плагинов и по запросу maintenance находим и ставим понравившийся плагин.
Обратите внимание, что он должен быть совместим с Вашей активной темой оформления.

2. Создание бэкапа базы mysql

Можно сделать бэкап только одной базы.
Либо сделать бэкап всего содержимого mysql сервера на тот случай если сайтов на одном хосте несколько или если у Вас новый чистый сервер куда Вы сайт переносите.

Мы сделаем вторым способом:
mysqldump -p —all-databases —events —ignore-table=mysql.event —extended-insert —add-drop-database —disable-keys —flush-privileges —quick —routines —triggers > all_databases.sql

Выгружаем дамп mysql базы на новый сайт

Дальше нужно выгрузить получившийся файл на новый хост

Делаьт это можно разными способами. Например, зайти со своего компьютера по FTP на старый сайт, забраьт дамп а затем выложиьт на новый. Или зайти с нового по FTP на старый и забрать сразу. Мы будем действовать методом scp (secure copy) основанной на протоколе ssh
Синтаксис такой: scp Source Destination
Например, при копировании со старого хоста на новый будет выглядеть так:
scp all_databases.sql user@tuninglinux.ru:/home/user/
Запросит пароль от пользователя user на хосте tuninglinux.ru (разумеется, он должен быть там настроен, должен быть поднят sshd для того, чтобы туда можно было подключиться ssh)

Перед копированием scp особенно больших дампов и содержимого сайтов целесообразно заархивировать дамп/архив:
tar -czvvf all_databases.tgz all_databases.sql — сначала указывается имя архива, потом — что туда положить. Туда можно класть как файлы так и целиком папки.
Ключи обозначают следующее:
с — create
z — дополнительное сжатие gzip-ом
v — verbose mode
f — указывает на необходимость использования помещения создаваемого архива в указанный файл вместо отправки на стандартный вывод

Восстановление дампа базы mysql

Получив файл с базой на нужном хосте мы его разархивируем и зальем в СУБД:
tar -xzvvf all_databases.tgz all_databases.sql
mysql -p < all_databases.sql В процессе разворачивания у Вас могут возникнуть ошибки вида ERROR 1273 (HY000) at line 35: Unknown collation: 'utf8_general_ci' Это связано с разными версиями mysql на старом и новом хостах. Для того, чтобы посмотреть версию mysql нужно залогиниться в mysql и выполнить команду mysql> select @@version;

Сделав это на обоих хостах и убедившись, что версии различаются, попробуем исправить возникающую ошибку.
Для этого нужно заменить все входящие в дамп базы сочетания utf8_general_ci на utf8

Это можно сделать различными способами. Например, в MidnightCommander или в текстовом редакторе.
Для единообразия изложения я это сделаю в командной строке:

sed ‘s/utf8_general_ci/utf8_general_ci/g’ all_databases.sql > all_databases1.sql

Снова пробуем развернуть дамп:
mysql -p < all_databases1.sql Опять ошибка: ERROR 1273 (HY000) at line 35: Unknown collation: 'utf8' Повторяем процедуру: sed 's/utf8/utf8/g' all_databases1.sql > all_databases2.sql
mysql -p < all_databases2.sql Всё ок, ошибок не обнаружено.

Перенос файлов сайта

Помимо текстов статей/страниц на сайте существуют шаблоны, стали, настроенные плагины, медиа-контент, которые тоже нужно перенести.
Тут уж без полюбившегося нам архивирования никак не обойтись.

tar -czvvf site_archive.tgz /var/www/html
scp site_archive.tgz user@tuninglinux.ru:/home/user/

И на новом сервере разворачиваем архив сразу в рабочую директорию:
tar -xzvvf site_archive.tgz /var/www/html/

И командой chown -R ставим правильные права какие здесь писать не буду по соображениям безопасности: сайт-то рабочий )