Создание резервной копии сайта с помощью командной строки CentOS

Для создания резервной копии сайта будем использовать командную строку и стандартный набор команд 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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *