Бэкап базы данных выполняется 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 pg_dump -Fd -v -Z 5 -j 5 --dbname=postgresql://postgres:PASS@localhost:5432/dozor -f `date +%y%m%d`.sql.dump 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.dump /home/backup/Db/`date +20%y`/`date +%m`
Создается директория, командой 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
Следующие строки будут проверять наличие старых архивов и создавать дамп postgres.
find /home/backup -type f -ctime +30 -name «*.sql.gz» -exec rm {} \; -print pg_dump -Fc -v --dbname=postgresql://postgres:ПАРОЛЬ_ЮЗ_ПОСТГРЕС@localhost:5432/dozor -f `date +%y%m%d`.sql.dump
Далее проверяются и создаются директории для хранения базы данных
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
Логи отправляются архивом на жесткий диск первого числа каждого месяца в 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
Переход в рабочую директорию:
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
С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 файлов делается вручную, после установки сервера или обновления сервисов, с сохранением в /home/backup/Bin
cp -r /var/lib/dozor /home/backup/Bin cd /home/backup/Bin/dozor rm -r log updates