====== Настройка бэкапов ====== ===== Бэкап базы данных ===== Бэкап базы данных выполняется bash-скриптом "backup.sh" находящийся в директории ///home/backup_scripts// Скрипт "backup.sh" выполняется каждый день в 03:15 с помощью демон-программы //Cron//. Архивы с бэкапами базы данных сохраняются в директории ///home/backup/Db/"год"/"месяц"// Запись в //Cron// идет с помощью исполняемого файла //"rc"// в директории ///etc/cron.h// #!/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//, в дальнейшем рассмотрим на примере. #!/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 Текст скрипта: #!/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 Текст скрипта: #!/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// решает какую задачу необходимо выполнить с флешкой. Создается новый скрипт и делается исполняемым по предыдущим примерам. Текст скрипта: #!/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” Процесс записи и чтении с флешки может занимать некоторое время. Необходимо вынимать флешку только тогда, когда не горит на ней световой индикатор.