#!/bin/bash # shellcheck source=/dev/null . /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" if ! pg_dump -Fc -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -d "${POSTGRES_DB}" -U "${POSTGRES_USER}" -f "${BACKUP_FILE_DB_POSTGRESQL}"; 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