Резервное копирование WordPress
Одной из причин перехода на новый хостинг было отсутствие возможности делать нормальный backup блога. Чтобы это было все в автоматическом режиме — один раз сделал и забыл. Так оно и получилось, а про сам процесс настройки резервного копирования базы данных и всех файлов блога расскажу ниже…
Куда будем копировать?
Очень важный вопрос – это где же хранить резервную копию своего сайта/блога? Понятно, что держать все яйца в одной корзине глупо. Обязательно для хранения backup нужно использовать отдельный файловый сервер. Для этого у хостинга есть услуга «Дисковое пространство для Backup» за 10 рублей в месяц за 1 ГБ. Весь мой блог весит меньше 300 МБ, поэтому за недорого получаю надежное хранилище резервный копий WordPress.
Заказать дисковое пространство можно в панели управления хостингом в меню услуги в самом низу.
Через несколько минут после заказа уже можно использовать дисковое пространство для записи бэкапов.
Настройка
На данном этапе имеем два сервера: С1 – сервер на котором крутится блог и С2 – сервер для backup.
1. Заходим на С1 по SSH (в Windows через Putty). Адрес, логин и пароль смотрим в меню «Мой аккаунт – Пароли аккаунта», учетные данные для FTP и SSH совпадают. Далее вводим команды:
cd private/ && mkdir backup/ && cd backup/ ssh-keygen -t rsa -f id-rsa
При запросе ввести passphrase – ничего не вводим, просто жмем Enter
Создались два ключа: id-rsa — приватный ключ и id-rsa.pub — публичный ключ.
2. Заходим на С2 по SFTP (порт 22) и создаем в корне папку .ssh/. В эту папку копируем публичный ключ id-rsa.pub и переименовываем его в .ssh/authorized_keys и ставим на файл права доступа 600.
3. На С1 в папку private/backup скачиваем два скрипта: backup-files.sh и backup-mysql.sh. В каждом скрипте нужно изменить 3 параметра:
B_USER — пользователь для подключения в backup аккаунт
B_HOST — хост подключения на backup сервер
DOMAIN — домен текущего сайта
Устанавливаем на файлы права для запуска 700:
chmod 700 backup-files.sh backup-mysql.sh
4. Теперь нужно прописать запуск этих скриптов по расписанию в планировщике. «Панель управления хостингом – Планировщики – Добавить задание». Я буду делать резервное копирование каждый день в 3 часа ночи.
И самое важное это команда на запуск скрипта, пишется в одну строку:
cd /home/httpd/vhosts/did5.ru/private/backup/ && /home/httpd/vhosts/did5.ru/private/backup/backup-files.sh rsync
Вместо did5.ru вставляйте свой домен.
Этот скрипт скопирует все файлы блога на С2. Для скрипта backup-files.sh можно указать как аргумент протокол передачи архива на backup сервер:
backup-files.sh rsync — производится копирование на backup сервер в папку httpdocs всех обновленных файлов по протоколу rsync без архивирования.При каждом последующем выполнении команды с ключем rsync, на backup сервер обновляются только новые и измененные файлы, а не все файлы сайта.
backup-files.sh sftp — производится копирование на backup сервер архива папки httpdocs в формате .tar.gz
backup-files.sh (без ключей) — производится копирование на backup сервер архива папки httpdocs в формате .tar.gz по протоколу scp
5. Второй скрипт скопирует базу данных
cd /home/httpd/vhosts/did5.ru/private/backup/ && /home/httpd/vhosts/did5.ru/private/backup/backup-mysql.sh HOST DB_USER DATABASE PASSWORD
где:
HOST — хост подключения к mysql серверу
DB_USER — пользователь базы данных
DATABASE — имя базы данных
PASSWORD — пароль пользвоателя для доступа к базе данных
Для проверки работоспособности я выставил время на 20 минут вперед, после чего зашел по SFTP на С2 и убедился, что скопировались файлы и база. На виртуальной машине развернул блог из резервной копии – работает.
В планах сделать копирование backup еще куда-нибудь, но это позже.
Нашли опечатку в тексте? Пожалуйста, выделите ее и нажмите Ctrl+Enter! Спасибо!
Хотите поблагодарить автора за эту заметку? Вы можете это сделать!