Backup (Бэкап) web сервера

Бэкап очень важен если вы дорожите информацией. И не важно, будь то это веб сервер или какой то другой. Вообщем тот сервер на котором вы не хотите потерять все данные в случае выхода его из строя. Восстановить данные бывает очень тяжело, а иногда и вовсе невозможно.  Есть 2 типа админов — те, кто ещё не делают бекапы, и те, кто уже делают. Бэкап должен быть автоматизирован и его копии должны хранится в нескольких местах. И так, ниже я преведу свой скрипт бэкапа. Он по своей составляющей прост но эффективен.

Название можете задать любое, мой называется backup-cyber-x.sh. Главное что бы он заканчивался на .sh

Скрипт:

#!/bin/bash
#backup mysql db of wordpree site:

#backup mysql
mysqldump -u имя пользователя -pПароль admin_wp > /home/cyber-x/backup/mysql/admin_wp.sql

#backup wordpress site
rsync -az /home/admin/web /home/cyber-x/backup/site/

tar -cpzf /home/cyber-x/cyber-x-backup/$(date +%F)-cyber-x.tar.gz /home/cyber-x/backup/

#backup delete
rm -r /home/cyber-x/backup/mysql/admin_wp.sql
rm -r /home/cyber-x/backup/site/web

База данных

Давайте я вам поясню что тут написано. В секции: backup mysql указаны данные от mysql базы, это ваш логин и пароль. Это нужно для того что бы скрипт смог беспрепятственно копировать ее в нужную нам папку. В моем случае база копируется по пути: /home/cyber-x/backup/mysql/. Вы же можете создать любую папку в домашней директории и указать скрипту копировать базу данных в нее. Ну и само собой указываем имя базы данных которую собираемся копировать: admin_wp.sql. Так же в начале указываем название базы данных которую надо скопировать, в моем случае это: admin_wp.

Директория сайта

В секции: backup wordpress site дано задание утилите rsync -az копировать мою директорию с сайтом по адресу: /home/admin/web /home/cyber-x/backup/site/. Тут все просто, эта часть делиться на 2 этапа. 1 – этап: указываем директорию с нашим сайтом. В моем случае это: /home/admin/web. У вас же данная директория может отличаться. К примеру у вас файлы с сайтом могут находится по следующему адресу: var/www/. 2 – этап указываем куда копировать. Тут все просто, как и в случае с базой данных создается папка и указывается что скрипту нужно копировать файлы именно сюда. В моем случае это: /home/cyber-x/backup/site/.

Архивация бэкапа и добавление в cron

Архивация выполняется командой: tar -cpzf /home/cyber-x/cyber-x-backup/$(date +%F)-cyber-x.tar.gz /home/cyber-x/backup/. Тут стоит заострить внимания только на названии: (date +%F)-cyber-x.tar.gz. В скобках автоматически указывается дата и время создания архива. А так же на пути: /home/cyber-x/cyber-x-backup/$(date +%F)-cyber-x.tar.gz – этот путь куда копируется архив. А этот откуда берутся файлы для архива:/home/cyber-x/backup/. И последние две команды удаляют не заархивированные файлы. Это нужно для того что бы не скапливался мусор в системе и бэкап был исправен:

#backup delete
rm -r /home/cyber-x/backup/mysql/admin_wp.sql
rm -r /home/cyber-x/backup/site/web

Дальше нужно сделать его исполнительным и добавить в cron. Это делается следующим образом, вводим в терминале:

Делаем исполнительным:

sudo chmod a+x имя вашего скрипта

Добавляем в cron:

sudo crontab -e

В самом конце файла добавляем запись:

#backup wordpress cyber-x in MySQL:
0 3 * * 3,6 /home/cyber-x/backup-cyber-x.sh

Тут так же все просто, 0 3 это время. Бэкап происходит в 3 часа 0 минут. 3,6 это дни недели, то есть в среду и в субботу. Проверить работоспособность скрипта можно следующим образом, в терминале набираете команду:

./backup-cyber-x.sh 

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

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

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