При проблемах с сайтом или хостингом администратор проекта должен иметь возможность быстро вернуть сайт в рабочее состояние. Для этих целей можно периодически создавать дубликат данных сайта: файлов и базы данных. Этот процесс называется резервным копированием, или бэкапом. При наличии бэкапа администратор сайта в любой момент вернёт работоспособность сломанного сайта или, в некоторых случаях, перенесет сайт на другой сервер.
Резервное копирование - процесс важный, но затратный по времени, если выполнять его вручную. Поэтому создание бекапа стараются автоматизировать, особенно, когда сайт часто обновляется и дубликат надо создавать ежедневно.
Мы сделали процесс резервного копирования бесплатным и сделали возможность использовать только встроенные возможности сервера без стороннего программного обеспечения.
В этой статье Вам будет выдан скрипт для выполнения всей рутинной работы по резервному копированию.
Данный скрипт позволяет создавать резервную копию каждый день и хранить их 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-скриптов в Интернете можно найти множество мануалов с готовыми примерами кода.