Для создания резервной копии сайта будем использовать командную строку и стандартный набор команд CentOS
Бекапы будем сохранять по сети на NFS хранилище. Для работы с NFS нам понадобится установить NFS утилиты клиента:
yum install nfs-utils
А так же создать директорию для точки монтирования
mkdir -p /mnt/nfs
Чтобы создать полную резервную копию, нам необходимо создать копию базы данных и копию директории самого сайта. Для начала создадим скрипт, который будет совершать указанные действия.
Создаем сам фаил скрипта:
touch /bin/webbackup.sh
В примере для доступа к базе данных используется пользователь dbuser с паролем dbpassword и имя базы данных wordpress. Учтите что у этого пользователя для создания бекапа базы данных должны быть права LOCK TABLES для этой базы. Иначе будет ошибка mysqldump: Got error: 1045.
Фаилы вебсайта лежат в /var/www/html
В фаиле скпита webbackup.sh прописываем следующие команды:
#!/bin/bash
# Скрипт бекапа вебсайта
# Перенаправляем stdout/stderr в фаил (Включаем логирование)
exec &> /var/log/webbackup.log
# ===== Определяем переменные =====
# Берем текущее время
BTIME=$(date +"%Y-%m-%d-%H%M")
# IP адрес NFS сервера, куда пойдут бекапы
NFSIP=192.168.50.10
# Папка на NFS сервере для бекапов
NFSDIR=/wordpress
# Имя пользователя базы данных
DBUSER=dbuser
# Пароль базы данных
DBPASS=dbpassword
# База данных для бекапа
DBBACKUP=wordpress
# Директория с фаилами веб сайта
WWWROOT=/var/www/html
# ===== Начинаем выполнять бекап =====
# Создаем директорию для бекапа
mkdir /tmp/$BTIME
# Создаем бекап базы данных, и архивируем его
echo $(date +"%Y.%m.%d %H:%M:%S") DB Backup started
mysqldump -u$DBUSER -p$DBPASS $DBBACKUP > /tmp/$BTIME/database.sql
echo $(date +"%Y.%m.%d %H:%M:%S") DB Backup complited. Creating DB archive
cd /tmp/$BTIME
tar -czf database.tar.gz database.sql
rm -f /tmp/$BTIME/database.sql
echo $(date +"%Y.%m.%d %H:%M:%S") DB archive complited. Creating www archive
# Создаем архив с фаилами веб сайта
cd $WWWROOT
tar -czf /tmp/$BTIME/www.tar.gz ./
echo $(date +"%Y.%m.%d %H:%M:%S") WWW archive complited. Copying backup to NFS
# Монтируем NFS хранилище и переписываем туда фаилы
mount $NFSIP:$NFSDIR /mnt/nfs
cp -R /tmp/$BTIME /mnt/nfs
# Демонтируем NFS и удаляем бекап с сервера
umount /mnt/nfs
rm -Rf /tmp/$BTIME
echo $(date +"%Y.%m.%d %H:%M:%S") Backup successfully completed
Делаем наш файл исполняемым. Для этого используется команда chmod +x и имя файла скрипта:
cd /bin
chmod +x webbackup.sh
Осталось настроить автоматический запуск скрипта по расписанию. Сначала определимся когда мы хотим делать бекапы. Для примера я выберу каждую пятницу в 22.00. Для планировщика cron это 0 22 * * 5
Данная строка запускает скрипт каждую пятницу в 22 часа
Заходим в планировщик командой
crontab –e
И там уже создаем запись
0 22 * * 5 /bin/webbackup.sh
Сохраняемся и выходим с помошью :wq
И перезапускаем службу cron с помощью команды:
systemctl restart crond.service
На этом все. И самое главное. Не забываем сделать несколько восстановлений резервной копии, чтоб убедится в ее работоспособности. И в случае необходимости быстро уметь восстановить сайт.