#!/bin/bash
#Проверяем что нет файла блокирующего повторного запуска скрипта и Создаём его 

 if [ -e "/etc/bkp_sql/lockfile" ]; then    
    		echo "Файл есть, выходим!"    
	else
		echo "Файла нет, поэтому создаем"
		touch /etc/bkp_sql/lockfile
		echo
		echo "Файл создан, начинаем бекап"

#Формируем текущую дату для добавление в название папок и файлов
backup_date=`date +%d-%m-%Y`
#формируем имя папки куда будет сохраняться бекап, внутри папки sql_backup
backup_dir="/sql_backup/$backup_date/"

#Создаём папку в которую будет сохраняться бекап
mkdir $backup_dir
#получаем список баз, бекапим все базы кроме служебных
databases=`psql -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`
for i in $databases; do  if [ "$i" != "postgres" ] && [ "$i" != "template0" ] && [ "$i" != "template1" ] && [ "$i" != "template_postgis" ]; then    
echo  Dumping $i to $backup_dir$i\_$backup_date.bak    
   pg_dump -Fc $i > $backup_dir$i\_$backup_date.bak

  fi
done

#Удаляем папки со старыми архивами, старше 6 дней(-mtime +6)
find /sql_backup/* -type d -mtime +6 -exec bash -c 'rm -rf {}' \;

#После бекапирования удаляем файл блокировки
rm -rf /etc/bkp_sql/lockfile
  fi
