Содержание

Настройка бэкапов

Бэкап базы данных

Бэкап базы данных выполняется bash-скриптом «backup.sh» находящийся в директории /home/backup_scripts
Скрипт «backup.sh» выполняется каждый день в 03:15 с помощью демон-программы Cron.
Архивы с бэкапами базы данных сохраняются в директории /home/backup/Db/«год»/«месяц»
Запись в Cron идет с помощью исполняемого файла «rc» в директории /etc/cron.h

backup.sh
#!/bin/sh
find /home/backup -type f -ctime +30 -name "*.sql.gz" -exec rm {} \; -print
mysqldump --defaults-extra-file=/home/backup_scripts/mysql.cfg dozor --default-character-set=utf8 --ignore-table=dozor.addr --ignore-table=dozor.addr_type | gzip -c > `date +%y%m%d`.sql.gz
if ! [ -d /home/backup/Db/`date +20%y` ]; then
mkdir /home/backup/Db/`date +20%y`/
fi
if ! [ -d /home/backup/Db/`date +20%y`/`date +%m` ]; then
mkdir /home/backup/Db/`date +20%y`/`date +%m`/
fi
mv `date +%y%m%d`.sql.gz /home/backup/Db/`date +20%y`/`date +%m`

Процесс создания bash-скрипта backup.sh

Создается директория, командой mkdir, для хранения бэкапов базы данных, логов и бинарных файлов:

cd /home
mkdir backup
cd backup
mkdir Logs Db Bin

Переход обратно в директорию Home:

cd /home

Создается дополнительная директория для хранения bash-скриптов:

mkdir backup_scripts

Переход в рабочую директорию:

cd /home/backup_scripts

Создается новый скрипт и делается исполняемым:

touch backup.sh
chmod +x ./backup.sh

Редактируется скрипт с помощью команды:

nano backup.sh

Предварительно установив nano:

emerge nano

Создавая пустой файл с использованием команды touch. В его первой строке нужно указать, какая именно оболочка используется. Поэтому первая строка файла будет такой:

#!/bin/bash

Следующие строки будут проверять наличие старых архивов, создавать дамп mysql и сразу его архивировать.

find /home/backup -type f -ctime +30 -name «*.sql.gz» -exec rm {} \; -print
mysqldump —defaults-extra-file=/home/backup_scripts/mysql.cfg dozor —default-character-set=utf8 —ignore-table=dozor.addr —ignore-table=dozor.addr_type | gzip -c > `date +%y%m%d`.sql.gz

Далее проверяются и создаются директории для хранения базы данных

if ! [ d /home/backup/Db/`date +20%y` ]; then
mkdir /home/backup/Db/`date +20%y`/
fi
if ! [ d /home/backup/Db/`date +20%y`/`date +%m` ]; then
mkdir home/backup/Db/`date +20%y`/`date +%m`/
fi
mv `date +%y%m%d`.sql.gz /home/backup/Db/`date +20%y`/`date +%m`

Выход из текстового редактора с сохранением осуществляется нажатием клавиш Ctrl+X, Enter

Для выполенения скрипта «backup.sh» необходимо создать файл конфигурации mysql.cfg:

cd /home/backup_scripts
touch mysql.cfg

И записать в него название базы данных и ее пароль:

nano mysql.cfg
[client]
user = dozor
password = …

Бэкап Логов

Логи отправляются архивом на жесткий диск первого числа каждого месяца в 03:00.
Настроено это bash-скриптом «back.sh», находящимся в директории /home/backup_scripts, который запускается с помощью демон-программы Cron.
Суть этого скрипта - он создает с проверкой новые каталоги /home/backup/Logs/ «год» . И отправляет заархивированные логи в созданную директорию. Также удаляет все старые архивы из /var/lib/dozor/log
Запускается каждый месяц с помощью Cron. Запись в Cron идет в файле «rc» в директории /etc/cron.d, в дальнейшем рассмотрим на примере.

back.sh
#!/bin/bash
cd /var/lib/dozor/log
tar -cMvf $(date +%y.%m.%d).tar.gz *
if ! [ -d /home/backup/Logs/`date +%20y`/ ]; then
mkdir /home/backup/Logs/`date +20%y`
fi
mv $(date +%y.%m.%d).tar.gz /home/backup/Logs/`date +20%y`
rm *.tar.gz

Процесс создания bash-скрипта back.sh

Переход в рабочую директорию:

cd /home/backup_scripts

Создание пустого файла с использованием команды touch:

touch back.sh

Файл делается исполняемым:

chmod +x ./back.sh

Файл back.sh редактируется с помощью текстового редактора nano:

nano back.sh

Создавая пустой файл с использованием команды touch. В его первой строке нужно указать, какая именно оболочка используется. Поэтому первая строка файла будет такой:

#!/bin/bash

Следующие строки скрипта будут архивировать логи, название архива - дата:

cd /var/lib/dozor/log
tar -cMvf $(date +%y.%m.%d).tar.gz *

Проверка каталогов, при их отсутсвии создаются новые:

if ! [ -d /home/backup/Logs/`date +20%y`/ ]; then
mkdir /home/backup/Logs/`date +20%y`
fi

Перемещение архивов и удаление старых логов:

mv $(date +%y.%m.%d).tar.gz /home/backup/Logs/`date +20%y`
rm *.tar.gz

Выход из текстового редактора с сохранением осуществляется нажатием клавиш Ctrl+X, Enter

Настройка CRON

Сron – программа-демон, предназначенная для выполнения заданий (скриптов) в определенное время, или через определенные промежутки времени.

Переход в директорию к исполняемому файлу:

cd /etc/cron.d

Редактирование исполняемого файла командой:

nano rc

Добавляются дополнительные строки по примеру:

0 3 1 * * root /home/backup_scripts/back.sh
15 3 * * * root /home/backup_scripts/backup.sh

Бэкап BIN файлов

Бэкап BIN файлов делается вручную, после установки сервера или обновления сервисов, с сохранением в /home/backup/Bin

cp -r /var/lib/dozor /home/backup/Bin
cd /home/backup/Bin/dozor
rm -r log updates

Бэкап базы данных на флэшку

При подключении флешки к серверу происходит бэкап базы данных mysql с сохранением на флешку, если флешка не содержит файлов формата .sql.gz
Если на флешке присутствует файл типа .sql.gz она автоматически восстановит базу данных.
Основной bash-скрипт BackupUSB.sh будет обращаться к двум скриптам: ExportUSB.sh и ImportUSB.sh
Для работы скриптов необходимо создать файл конфигурации root.cfg в дирректории /home/backup_scripts

cd /home/backup_scripts
touch root.cfg
nano root.cfg

И записать в него название базы данных и ее пароль:

[client]
user = root
password = …

Процесс создания bash-скрипта ExportUSB.sh

Скрипт ExportUSB.sh делает бэкап базы данных mysql при подключении флешки к серверу. Копирует архив с базой данных на флешку и пишет лог файл с проверками.

Переход в рабочую директорию:

cd /home/backup_scripts

Создается новый скрипт и делается исполняемым:

touch ExportUSB.sh
chmod +x ./ExportUSB.sh

Редактируется скрипт с помощью команды:

nano ExportUSB.sh

Текст скрипта:

ExportUSB.sh
#!/bin/bash

LOGFILE=/mnt/usb/backupDB.txt

    echo >>$LOGFILE
    echo "=================================================" >>$LOGFILE
    echo "$(date +'%d-%b-%Y %R')" >>$LOGFILE
    echo "BackUp DataBase started" >>$LOGFILE

/etc/init.d/d3srv stop
/etc/init.d/e3srv stop

    echo "-d3srv is stopped" >>$LOGFILE
    echo "-e3srv is stopped" >>$LOGFILE
    echo "-d-sh is stopped" >>$LOGFILE

mysqldump --defaults-extra-file=/home/backup_scripts/root.cfg dozor --ignore-table=dozor.addr --ignore-table=dozor.addr_type | sed '20a\use `dozor`\' | gzip -c > /home/backup-scripts/`date +%y%m%d`.sql.gz

/etc/init.d/d3srv start
/etc/init.d/e3srv start
/etc/init.d/d-sh start

    echo "-d3srv started" >>$LOGFILE
    echo "-3esrv started" >>$LOGFILE
    echo "-d-sh started" >>$LOGFILE

STATUS=$?

    echo "BackUp DataBase saved as `date "+%y%m%d.sql.gz"`" >>$LOGFILE
    echo "Started copying the file to the backup resource" >>$LOGFILE

cp -f /home/backup_scripts/`date +%y%m%d`.sql.gz /mnt/usb/ &>>$LOGFILE

    if [[ $? != 0 ]]; then
        echo "#############################################################" >>$LOGFILE
        echo "### An error occurred while copying to the backup resource###" >>$LOGFILE
        echo "#############################################################" >>$LOGFILE
        else
            echo "The file was successfully copied" >>$LOGFILE
            echo "All operations completed successfully!" >>$LOGFILE

    fi

    echo "Unmounting the file system" >>$LOGFILE
rm -r /home/backup_scripts/*.sql.gz
umount /mnt/usb

Выход из текстового редактора с сохранением осуществляется нажатием клавиш Ctrl+X, Enter

Процесс создания bash-скрипта ImportUSB.sh

Скрипт Import.sh проверяет наличие фалов формата .sql.gz на флешке и при их наличии восстанавливает базу данных.
Переход в рабочую директорию:

cd /home/backup_scripts

Создается новый скрипт и делается исполняемым:

touch ImportUSB.sh
chmod +x ./ImportUSB.sh

Редактируется скрипт с помощью команды:

nano ImportUSB.sh

Текст скрипта:

ImportUSB.sh
#!/bin/bash
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb

    echo >> /mnt/usb/backupDB.txt
    echo "=================================================" >>/mnt/usb/backupDB.txt
    echo "$(date +'%d-%b-%Y %R')" >>/mnt/usb/backupDB.txt
    echo "Import DataBase started" >> /mnt/usb/backupDB.txt

gunzip /mnt/usb/*.sql.gz

/etc/init.d/d3srv stop
/etc/init.d/e3srv stop

    echo "-d3srv stoped" >>/mnt/usb/backupDB.txt
    echo "-3esrv stoped" >>/mnt/usb/backupDB.txt
    echo "-d-sh stoped" >>/mnt/usb/backupDB.txt

mysql --defaults-extra-file=/home/backup_scripts/root.cfg < /mnt/usb/*.sql

/etc/init.d/d3srv start
/etc/init.d/e3srv start
/etc/init.d/d-sh start

    echo "-d3srv started" >>/mnt/usb/backupDB.txt
    echo "-3esrv started" >>/mnt/usb/backupDB.txt
    echo "-d-sh started" >>/mnt/usb/backupDB.txt
    echo "All operation completed successfully!" >>/mnt/usb/backupDB.txt

rm -r /mnt/usb/*.sql
umount /dev/sdb1

Выход из текстового редактора с сохранением осуществляется нажатием клавиш Ctrl+X, Enter

Процесс создания bash-скрипта BackupUSB.sh

Основной скрипт BackupUSB.sh решает какую задачу необходимо выполнить с флешкой.

Создается новый скрипт и делается исполняемым по предыдущим примерам.

Текст скрипта:

BackupUSB.sh
#!/bin/bash
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb
if [ -f /mnt/usb/*.sql.gz ]; then
. /home/backup_scripts/ImportUSB.sh
else
if ! [ -f /mnt/usb/*sql.gz ]; then
. /home/backup_scripts/ExportUSB.sh
exit
fi
umount /dev/sdb1
fi

Выход из текстового редактора с сохранением осуществляется нажатием клавиш Ctrl+X, Enter

Настройка UDEV

Скрипт BackupUSB.sh запускается с помощью менеджера устройств Udev.
Он управляет файлами устройств в каталоге /dev и обрабатывает все действия из пользовательского пространства при добавлении или удалении устройств.
В дирректорию /etc/udev/rules.d добавляется новая задача 10-usb.rules

Создается исполняемый файл

touсh /etc/udev/rules.d/10-usb.rules

Записываются параметы для запуска флешки

nano 10-usb.rules
KERNEL=="sdb*", ACTION=="add", OWNER="dozor", GROUP="dozor", RUN+="/home/backup_scripts/BackupUSB.sh”

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