Создание BASH скрипта резервного копирования

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


Резервное копирование - процесс важный, но затратный по времени, если выполнять его вручную. Поэтому создание бекапа стараются автоматизировать, особенно, когда сайт часто обновляется и дубликат надо создавать ежедневно.


Мы сделали процесс резервного копирования бесплатным и сделали возможность использовать только встроенные возможности сервера без стороннего программного обеспечения.


В этой статье Вам будет выдан скрипт для выполнения всей рутинной работы по резервному копированию.
Данный скрипт позволяет создавать резервную копию каждый день и хранить их 7 дней, затем он удалит самую старую резервную копию на 8-й день выполнения скрипта

Конфигурация скрипта:

#!/bin/bash

WWW_PATH=/var/www/html             # вместо /var/www/html - Директория сайта для резервной копии

FTP_HOST="FTP_IP"                  # вместо FTP_IP - IP-адрес FTP сервера
FTP_USER="FTP_USERNAME"            # вместо FTP_USERNAME - Имя FTP пользователя
FTP_PWD="FTP_PASSWORD"             # вместо FTP_PASSWORD - Пароль FTP пользователя

DB_HOST="127.0.0.1"                # вместо 127.0.0.1 - IP сервера Базы Данных
DB_USER="DB_USERNAME"              # вместо DB_USERNAME - Пользователь Базы данных 
DB_PWD="PASSWORD"                  # вместо PASSWORD - Пароль от Базы данных

CURRENT_TIMESTAMP=$(date +%Y-%m-%d-%H-%M)

mysqldump -A -u "$DB_USER" -h "$DB_HOST" -p "$DB_PWD" --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats > "./mysqldump.sql"

tar -zc --file "./dump-$CURRENT_TIMESTAMP.tar" "$WWW_PATH" "./mysqldump.sql"

ftp -n $FTP_HOST <<END_SCRIPT
quote USER $FTP_USER
quote PASS $FTP_PWD
binary
put ./dump-$CURRENT_TIMESTAMP.tar
quit
END_SCRIPT

rm -f "./dump-$CURRENT_TIMESTAMP.tar" "./mysqldump.sql"

ndays=7

MM=`date --date="$ndays days ago" +%b`
DD=`date --date="$ndays days ago" +%d`

echo removing files older than $MM $DD

listing=`ftp -i -n $FTP_HOST <<EOMYF 
quote USER $FTP_USER
quote PASS $FTP_PWD
binary
ls
quit
EOMYF
`
lista=( $listing )

for ((FNO=0; FNO<${#lista[@]}; FNO+=9));do
    if [ ${lista[`expr $FNO+5`]}=$MM ];
    then
        if [[ ${lista[`expr $FNO+6`]} -lt $DD ]];
        then
            echo "Removing ${lista[`expr $FNO+8`]}"
            ftp -i -n $FTP_HOST <<EOMYF2 
            quote USER $FTP_USER
            quote PASS $FTP_PWD
            binary
            delete ${lista[`expr $FNO+8`]}
            quit
EOMYF2
        fi
    fi
done

exit 0

В комментариях к скрипту указаны все параметры, которые Вам нужно указать для его верной работоспособности

Запуск скрипта:

Запуск происходит через cron: для этого на нашем хостинге в панели есть специальный раздел с настройкой CRON - "Планировщик".

Основа использования cron – выполнение задач в определённое время, как показано ниже. Это будет выполнять скрипт резервного копирования написанный нами 10 июня в 8.30.
Пожалуйста, обратите внимание, что поле времени использует 24-часовой формат, Так что 8 АМ – 8, 8 РМ – 20 часов.

30 08 10 06 * /home/developer/name_of_your_script


30 – 30-ая минута
08 – 08 АМ
10 – 10-й день
* – каждый день недели


Этот скрипт выполняет простую задачу: создаёт файлы, чтобы сломанный по каким-то причинам сайт можно было вернуть в рабочее состояние. Вы можете взять за основу этот bash-скрипт и дополнить его своим кодом под ваши потребности. Для написания bash-скриптов в Интернете можно найти множество мануалов с готовыми примерами кода.


12 апреля 2021

Вас может заинтересовать

16 сентября 2023
Все, что вам нужно знать о серверах 10 Гбит/с
В современном цифровом мире скорость решает все. Вот почему пропускная способность является таким ва ...