Выполнение на Linux серверах регулярных бекапов веб-сайта или базы данных (БД) является важной практикой для обеспечения безопасности и сохранности данных. Вот несколько основных причин, почему необходимо выполнять бекапы с использованием скриптов:
1. Сбои и ситуации аварийного восстановления: Веб-сайты и БД могут столкнуться с различными проблемами, такими как сбои сервера, атаки злоумышленников, ошибки разработчика или случайное удаление данных. Регулярное создание бекапов позволяет восстанавливать данные и веб-сайт до момента возникновения проблемы.
2. Защита от потери данных: Бекапы являются гарантией сохранности данных в случае их удаления, повреждения или утраты. Если веб-сайт или БД содержат важную информацию, такую как пользовательские данные, заказы, контент или настройки, резервное копирование помогает минимизировать потери и восстановить работоспособность.
3. Тестирование и разработка: Бекапы данных могут использоваться в целях тестирования и разработки. Они позволяют создавать копии рабочей среды для проверки новых функций, исправлений ошибок или экспериментов без риска потери реальных данных.
4. Миграция на новый хостинг: При переносе веб-сайта на новый хостинг или изменении серверной инфраструктуры бекапы помогают сохранить данные и перенести их на новую платформу.
5. Соответствие правилам безопасности: В некоторых отраслях, таких как финансы или медицина, существуют правила и нормативные акты, требующие создания и хранения резервных копий для обеспечения безопасности данных. Выполнение бекапов с использованием скриптов позволяет легко автоматизировать этот процесс и следовать соответствующим требованиям.
6. Восстановление после человеческих ошибок: Иногда удаление или изменение данных может быть результатом непреднамеренных человеческих ошибок. Бекапы позволяют вернуть данные к предыдущему состоянию и откатиться к более стабильной версии.
Выполнение бекапов с использованием скриптов позволяет автоматизировать и упростить этот процесс,
Скрипт.
Например Вам нужно выполнять перодически бекапы сайта на внешнее FTP-храпнилище. Можно использовать скрипт на Bash. Для использования данного скрипта и выполнения бекапов нужно что бы был установлен wput. Скрипт можно скачать с GitHub.
Мы выполняем следующие действия: Переходим в директорию/backup/sql
. У нас есть специальная директория на нашем сервере, где мы сохраняем резервные копии нашей базы данных. Используя утилитуmysqldump
, мы создаем резервную копию нашей базы данныхDATABASE, с паролем для подклчюения PASS
. Экспортируем содержимое базы данных с помощью командыmysqldump
, а затем сжимаем его с максимальным уровнем сжатия-9
с помощьюgzip
. Результат сжатия мы сохраняем в файл с именем, содержащим текущую дату и расширением.gz
. Затем мы выполняем командуwput
, которая отправляет файл резервной копии нашей базы данных (date +sql-dump.%d%m%y.gz
) по FTP на наш удаленный сервер. Используем FTP-соединение и указываем имя пользователяuserXXXXXX
, парольPASS
и IP-адрес сервераIP
.
У нас также есть отдельная директория, где мы храним резервные копии файлов нашего веб-сайта. Переходим в директорию расположения бекапов сайта /backup/www
. Используем команду tar
, чтобы создать архив файлов нашего веб-сайта /var/www/html/
. Сохраняем права доступа файлов с помощью флага p
и сжимаем архив с помощью gzip
и флага z
. Результат сохраняется в файл с именем, содержащим текущую дату и расширением .tar.gz
.
Наконец, мы выполняем команду wput
, чтобы отправить файл архива наших файлов веб-сайта (date +files.%d%m%y.tar.gz
) по FTP на наш удаленный сервер. Мы передаем данные для FTP-соединения, включая имя пользователя userXXXXXX
, пароль PASS
и IP-адрес удаленного сервера IP
или внешнего FTP -хранилища.
Таким образом, мы создаем резервные копии нашей базы данных и файлов веб-сайта, а затем отправляем их на удаленный FTP-сервер для безопасного хранения и сохранности данных.
#!/bin/bash
cd /backup/sql
mysqldump -u root -pPASS DATABASE | gzip -c -9 > `date +sql-dump.%d%m%y.gz`
wput `date +sql-dump.%d%m%y.gz` ftp://userXXXXXX:PASS@IP/
cd /backup/www
tar -cpzf /backup/www/`date +files.%d%m%y`.tar.gz /var/www/html/
wput `date +files.%d%m%y.tar.gz` ftp://userXXXXXX:PASS@IP/
Примечания.
Можно создать скрипт и положить в /etc/cron.daily/ для ежедневного резервного копирования с указанием в имени даты архивации. Однако, если скрипт будет запускатсья автоматически, могут быть негатывные последствия, через некоторе время, при заполнении места на сервере или внешнем FTP-хранилище - бекапы перестанут выполняться ! Данный простой скрипт можно использовать только если Вы сами будет периодически проверять и/или удалять старые бекапы по дате создания или проверяя дату в имени архвах. Выполнение скрипта по крону и/или более сложные варианты рассмотрим в другой статье.