50 lines
1.6 KiB
Bash
Executable File
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
|