#!/bin/sh
# Backup planner running from crontab.
# Скрипт для запуска backup подсистемы из crontab.
#
# http://www.opennet.ru/dev/fsbackup/
# Copyright (c) 2001 by Maxim Chirkov. <mc@tyumen.ru>
#
# Пример строки для crontab:
#
#18 4 * * * /usr/local/fsbackup/create_backup.sh| mail -s "`uname -n` backup report" root

#--------------------------------------
# Path where fsbackup installed.
# Директория где установлена программа.
#--------------------------------------

backup_path="/usr/local/fsbackup"


#--------------------------------------
# List of fsbackup configuration files, delimited by spaces.
# Directories for saving backup in each configuration file should differ 
# ($cfg_remote_path, $cfg_local_path).
#
# Список файлов конфигурации, разделенных пробелом.
# Директории для сохранения бэкапа в каждом конфигурационном файле
# должны отличаться ($cfg_remote_path, $cfg_local_path), сохранение в одной и
# тойже директории нескольких, описанных разными .conf файлами, бэкапов не 
# допустимо.

#--------------------------------------

config_files="cfg_example"


#--------------------------------------
# 1 - run mysql_backup.sh script (you need edit mysql_backup.sh first!), 0 - not run.
# Флаг бэкапа MySQL таблиц, запускается требующий предварительной настройки
# скрипт ./scripts/mysql_backup.sh, 1 - запускать, 0 - не запускать. 
#--------------------------------------

backup_mysql=0

#--------------------------------------
# 1 - run pgsql_backup.sh script (you need edit pgsql_backup.sh first!), 0 - not run.
# Флаг бэкапа PostgreSQL таблиц, запускается требующий предварительной настройки
# скрипт ./scripts/pgsql_backup.sh, 1 - запускать, 0 - не запускать. 
#--------------------------------------

backup_pgsql=0

#--------------------------------------
# 1 - run sqlite_backup.sh script (you need edit sqlite_backup.sh first!), 0 - not run.
# Флаг бэкапа SQLite таблиц, запускается требующий предварительной настройки
# скрипт ./scripts/sqlite_backup.sh, 1 - запускать, 0 - не запускать. 
#--------------------------------------

backup_sqlite=0


#--------------------------------------
# 1 - run sysbackup.sh script (you need edit sysbackup.sh first!), 0 - not run.
# Флаг бэкапа параметров системы, запускается требующий предварительной 
# настройки скрипт ./scripts/sysbackup.sh, 1 - запускать, 0 - не запускать. 
#--------------------------------------

backup_sys=0



#############################################################################
cd $backup_path

# Оставил ulimit после тестирования, на всякий случай.
#ulimit -f 512000;ulimit -d 20000;ulimit -c 100;ulimit -m 25000;ulimit -l 15000

# Сохраняем MySQL базы
if [ $backup_mysql -eq 1 ]; then
    ./scripts/mysql_backup.sh 
fi

# Сохраняем PostgreSQL базы
if [ $backup_pgsql -eq 1 ]; then
    ./scripts/pgsql_backup.sh 
fi

# Сохраняем SQLite базы
if [ $backup_sqlite -eq 1 ]; then
    ./scripts/sqlite_backup.sh 
fi

# Сохраняем системные параметры
if [ $backup_sys -eq 1 ]; then
    ./scripts/sysbackup.sh
fi

# Бэкап.
for cur_conf in $config_files; do
    ./fsbackup.pl ./$cur_conf
    next_iter=`echo "$config_files"| grep "$cur_conf "`
    if [ -n "$next_iter" ]; then
	sleep 600 # Засыпаем на 10 минут, даем процессору остыть :-)
    fi
done

