Скрипты для бэкапирования (PostgreSQL, Linux)

Для снятия резервной копии базы данных и переноса файлов системы в архив можно использовать приведенный ниже скрипт. В скрипт добавлен этап архивирования с помощью программы zip (должен быть установлен на сервере).

Скрипт приведен в качестве примера, требует редактирования под реалии заказчика.

#Current Date
Tdate=`date +%Y_%m_%d`
#Postgresql path
PG_DIR=/usr/lib/postgresql/10/bin
#Tomcat path
TOMCAT_DIR=/opt/haulmont/tomcat
#Backup root folder
BACKUP_DIR=/opt/BACKUP/archive
#Postgresql host and port
PG_HOST=localhost
PG_PORT=5432
#Database name
DB_NAME=thesis
#DB user
PG_USER=root
 
if [ ! -d $BACKUP_DIR/$Tdate ]; then
    mkdir $BACKUP_DIR/$Tdate
fi
 
DUMP_FILE=$BACKUP_DIR/$Tdate/$DB_NAME'_'$Tdate.dump
 
$PG_DIR/pg_dump -w -h $PG_HOST -p $PG_PORT -Fp -f $DUMP_FILE -U $PG_USER $DB_NAME
 
TOMCAT_BACKUP_DIR=$BACKUP_DIR/$Tdate/tomcat
 
if [ ! -d $TOMCAT_BACKUP_DIR ]; then
    mkdir $TOMCAT_BACKUP_DIR
fi
 
cp -uR $TOMCAT_DIR/* $TOMCAT_BACKUP_DIR
#zip -r $BACKUP_DIR/$Tdate.zip $BACKUP_DIR/$Tdate

Для удаления старых копий можно использовать второй скрипт. Он просматривает файлы в папке и ищет файлы старше 10 дней, после удаляет их.

#! /bin/bash
i=10 #(или ваше число дней)
find /opt/BACKUP/archive -type d -mtime +$i -exec rm -dfR {} \;

Оба файла нужно сделать исполняемыми и прописать в крон с помощью команд:

chmod +x filename

export EDITOR=nano - устанавливает редактор по умолчанию на сессию nano

crontab -e - открывает файл расписания по умолчанию

По ссылке ресурс для помощи настройки расписания - Crontab.guru - The cron schedule expression generator*