ConceptPortal-public/scripts/prod/CreateBackup.sh

53 lines
1.3 KiB
Bash
Raw Normal View History

2023-09-01 23:20:14 +03:00
# ====== Create database backup ==========
# WARNING! DO NOT RUN THIS FILE AUTOMATICALLY FROM REPOSITORY LOCATION!
# Create a copy in secure location @production host. Update backup scripts from repository manually
# ========================================
2023-09-19 21:04:59 +03:00
BACKUP_LOCATION="/home/prod/backup"
POSTGRE_USER="portal-admin"
POSTGRE_DB="portal-db"
CONTAINER_DB="portal-db"
CONTAINER_BACK="portal-backend"
2023-09-01 23:20:14 +03:00
2023-09-19 21:04:59 +03:00
DATE_FORMATTED=$(date '+%Y-%m-%d')
DESTINATION="${BACKUP_LOCATION}/${DATE_FORMATTED}"
2023-09-01 23:20:14 +03:00
2023-09-19 21:04:59 +03:00
ensure_location() {
rm -rf $DESTINATION
mkdir $DESTINATION
2023-09-01 23:20:14 +03:00
}
2023-09-19 21:04:59 +03:00
dump_postgre() {
DB_DUMP_FILE="${DESTINATION}/${DATE_FORMATTED}-db.dump"
docker exec $CONTAINER_DB pg_dump \
--username=$POSTGRE_USER \
2023-09-01 23:20:14 +03:00
--exclude-table=django_migrations \
--format=custom \
2023-09-19 21:04:59 +03:00
--dbname=$POSTGRE_DB \
> $DB_DUMP_FILE
2023-09-01 23:20:14 +03:00
}
2023-09-19 21:04:59 +03:00
dump_django() {
DATA_DUMP_FILE="${DESTINATION}/${DATE_FORMATTED}-data.json"
docker exec $CONTAINER_BACK \
2024-06-04 01:43:04 +03:00
python3.12 manage.py dumpdata \
2023-09-01 23:20:14 +03:00
--indent=2 \
--exclude=admin.LogEntry \
--exclude=sessions \
--exclude=contenttypes \
--exclude=auth.permission \
2023-09-19 21:04:59 +03:00
> $DATA_DUMP_FILE
gzip --force $DATA_DUMP_FILE
2023-09-01 23:20:14 +03:00
}
2023-09-19 21:04:59 +03:00
create_backup() {
ensure_location
dump_postgre
dump_django
green="\033[0;32m"
noColor='\033[0m'
echo -e "${green}Backup created at: ${DESTINATION}${noColor}"
}
2023-09-08 13:57:49 +03:00
2023-09-19 21:04:59 +03:00
create_backup