#!/bin/bash
#Подгружаем переменные окружения для правильной работы скрипта при запуске Cron'а
. /etc/profile.d/env_oracle.sh
#Имя и пароль пользователя БД на сервере Oracle на 192.168.1.1, от имени которого будет запускаться экспорт пользователей БД
ORACLE_ADMIN_USER="${ORACLE_ADMIN_USER}"
ORACLE_ADMIN_PASSWORD="${ORACLE_ADMIN_PASSWORD}"
#Пользователи БД, которых требуется бэкапить, подаются строго через запятую
ORACLE_USERS_TO_BACKUP="USER1,USER2"
#Путь к папке DATA PUMP, в которой временно(на время работы крона, стартующего в 2 часа ночи) будут храниться еженочные дампы
CRONDPDUMPDIR="/home/oracle/crondpdump"
#Формат даты, которая будет использоваться в названии файла еженочного архива
DATE=`date +%y.%m.%d`
MOUNT_TEST=`ls /mnt/backup | grep test.test`
if [ -z ${MOUNT_TEST} ]; then
mount -t cifs //192.168.1.2/backup /mnt/backup/ -o uid=1000,iocharset=utf8,username="user",password="password",sec=ntlm
else
echo "BACKUP DIR MOUNTED"
fi
#Удаляем содержимое папки DPDUMPDIR (она никогда никем не должна использоваться кроме Cron'а )
rm -rf ${CRONDPDUMPDIR}/
#Запускаем цикл по пользователям БД, которые попадают под бэкапирование
ORACLE_USERS_TO_BACKUP_ARR=(${ORACLE_USERS_TO_BACKUP//,/ })
for i in ${!ORACLE_USERS_TO_BACKUP_ARR[@]}
do
#Формат даты, которая будет использоваться в названии файла с дампом конкретного пользователя БД
TIMESTAMP=`date +%y.%m.%d-%H.%M.%S`
su - oracle -c "expdp ${ORACLE_ADMIN_USER}/${ORACLE_ADMIN_PASSWORD} directory=cron_data_pump_dir schemas=${ORACLE_USERS_TO_BACKUP_ARR[i]} exclude=statistics,type,user"
done
tar -cvzf ${CRONDPDUMPDIR}/city_${DATE}.tar.gz ${CRONDPDUMPDIR}/ 2>/dev/null
mv ${CRONPDPUMPDIR}/* /mnt/backup/