Files
pgz-sport/scripts/sport_harvest_backup.sh

50 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# sport_harvest_backup.sh — pre-cron pg_dump of harvest tables
# v1.0 — dradulic@outlook.com / damir@rinet.one — 2026-05-05
# Description: Backups 4 ključne pgz_sport tablice prije sport harvester cron cikla.
# Pokreće ga /etc/cron.d/sport-harvesters u 02:50 svaki 2. dan.
set -u
DSN_HOST="${RINET_DB_HOST:-10.10.0.2}"
DSN_PORT="${RINET_DB_PORT:-6432}"
DSN_DB="${RINET_DB_NAME:-rinet_v3}"
DSN_USER="${RINET_DB_USER:-rinet}"
DSN_PASS="${DB_PASSWORD:?DB_PASSWORD not set}"
BACKUP_DIR="/opt/pgz-sport/_backups"
LOG_DIR="/var/log/pgz-sport-debug"
DATE_TAG="$(date +%Y%m%d_%H%M)"
DATE_DAY="$(date +%Y%m%d)"
OUT_FILE="${BACKUP_DIR}/sport_harvest_pre_${DATE_TAG}.sql"
LOG_FILE="${LOG_DIR}/cron_backup_${DATE_DAY}.log"
mkdir -p "${BACKUP_DIR}" "${LOG_DIR}"
{
echo "[$(date -Is)] sport_harvest_backup START → ${OUT_FILE}"
PGPASSWORD="${DSN_PASS}" pg_dump \
-h "${DSN_HOST}" -p "${DSN_PORT}" -U "${DSN_USER}" -d "${DSN_DB}" \
--no-owner --no-privileges --data-only \
-t pgz_sport.clanovi \
-t pgz_sport.klub_roster \
-t pgz_sport.player_stats \
-t pgz_sport.clan_kategorije \
-f "${OUT_FILE}"
RC=$?
if [ "${RC}" -eq 0 ] && [ -s "${OUT_FILE}" ]; then
SIZE=$(stat -c%s "${OUT_FILE}")
echo "[$(date -Is)] OK rc=${RC} size=${SIZE}B"
else
echo "[$(date -Is)] FAIL rc=${RC} (file empty or pg_dump error)"
exit 1
fi
# Retencija: zadrži 14 dana
find "${BACKUP_DIR}" -maxdepth 1 -name 'sport_harvest_pre_*.sql' -mtime +14 -print -delete
echo "[$(date -Is)] retention swept (>14d)"
echo "[$(date -Is)] sport_harvest_backup DONE"
} >> "${LOG_FILE}" 2>&1