Для снятия резервной копии базы данных и переноса файлов системы в архив можно использовать приведенный ниже скрипт. В скрипт добавлен этап архивирования с помощью программы 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*