Удалённое и локальное резервное копирование файлов и баз данных сайта

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

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

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

Для работы нам понадобиться Cron, прямые руки и доступ к SSH.

Для начала создаём файл, который назовём backup.sh. Файл крайне не рекомендуется создавать в зоне www, а лучше в самом корне файловой системы хостинга до которого вы можете добраться. Затем создаём папку там же в корне, куда будут копироваться резервные копии, назовём её archive и присвоим права 777.

Теперь желательно определиться будет ли ещё копирование резервных копий на удалённый сервер по FTP или нет. Если да, то настройте на удалённом сервере FTP к необходимой вам папке, куда будут копироваться архивы файлов и БД.

Теперь наполняем файл backup.sh написанным мною скриптом:

#!/bin/bash
mysqldump -u USER_DB -pPASSWORD_DB NAME_DB > archive/mysite_db-`/bin/date +%Y-%m-%d`.sql #Записываем в файл дамп БД
tar -zcf archive/mysite.ru-`/bin/date +%Y-%m-%d`.tar.gz www/mysite.ru #Сохраняем в архив файлы сайта
#Всё что ниже - связано с копирование по FTP, можете удалить если вам это не нужно
ftp -n HOST_FTP <<END_SCRIPT
    quote USER USER_FTP
    quote PASS PASSWORD_FTP
    dir
    ascii
    put archive/mysite_db-`/bin/date +%Y-%m-%d`.sql db/mysite_db-`/bin/date +%Y-%m-%d`.sql
    put archive/mysite.ru-`/bin/date +%Y-%m-%d`.tar.gz files/mysite.ru-`/bin/date +%Y-%m-%d`.tar.gz
   dir
   quit
END_SCRIPT
exit 0
 
В этом скрипте вам необходимо заменить и заполнить следующее:
USER_DB - Пользватель базы данных
PASSWORD_DB - Пароль пользователя базы данных
NAME_DB - Имя базы данных, которую будем бэкапить
HOST_FTP - IP адрес удалённого FTP сервера
USER_FTP - Имя пользователя FTP
PASSWORD_FTP - Пароль FTP
www/mysite.ru - Путь до папки с файлами сайта
 
После успешного создания и наполнения файла backup.sh, добавляем задание в Cron на выполнение 1 раз в сутки. У меня резервные копии создаются каждые 05:01 утра и выглядит это в Cron так:
1 5 * * * sh \backup.sh >/dev/null 2>&1
Есть один момент, если вы решите делать резервные копии например каждый час, (или просто чаще раза в сутки) тогда везде в скрипте замените %Y-%m-%d на %Y-%m-%d-%H.
Надеюсь вам помогла данная статья в создании резервных копий вашего сайта. Удачи, если что-то не понятно - пишите в комментариях.

You have no rights to post comments

Карта сайта