Files
dockerfiles/postgres-backup/app/backup.sh
2024-01-20 11:52:52 +01:00

60 lines
1.2 KiB
Bash

#!/bin/bash
. /app/includes.sh
function clear_dir() {
rm -rf "${BACKUP_DIR}"
}
function backup_init() {
NOW="$(date +"${BACKUP_FILE_DATE_FORMAT}")"
# backup postgresql database file
BACKUP_FILE_DB_POSTGRESQL="${BACKUP_DIR}/db.${NOW}.dump"
# backup zip file
BACKUP_FILE_ZIP="${BACKUP_DIR}/../backup.${NOW}.7z"
mkdir -p "${BACKUP_DIR}"
}
function backup_db_postgresql() {
echo "backup postgresql database"
pg_dump -Fc -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -d "${POSTGRES_DB}" -U "${POSTGRES_USER}" -f "${BACKUP_FILE_DB_POSTGRESQL}"
if [[ $? != 0 ]]; then
echo "backup postgresql database failed"
exit 1
fi
}
function backup_package() {
echo "package backup file"
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -mhe=on "${BACKUP_FILE_ZIP}" "${BACKUP_DIR}"/*
ls -lah "${BACKUP_DIR}"
echo "display backup ${ZIP_TYPE} file list"
7z l "${BACKUP_FILE_ZIP}"
chown 1000:100 "${BACKUP_FILE_ZIP}"
}
function clear_history() {
if [[ "${BACKUP_KEEP_DAYS}" -gt 0 ]]; then
echo find "${BACKUP_DIR}" -mtime +"${BACKUP_KEEP_DAYS}" -exec rm -rf {} \;
fi
}
echo "running the backup program at $(date +"%Y-%m-%d %H:%M:%S %Z")"
init_env
clear_dir
backup_init
backup_db_postgresql
backup_package
clear_dir
clear_history