Updated backup Script

This commit is contained in:
Rufus King 2026-08-20 18:41:57 -04:00
parent 1c930526c1
commit 8ae0fab1ee

View file

@ -29,7 +29,7 @@
# OMV -> System -> Scheduled Jobs
#
# Backup destination: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker
# Script location: /usr/scripts/fundtracker-backup.sh
# Script location: /usr/scripts/fundtracker/fundtracker-backup.sh
# =============================================================================
set -uo pipefail
@ -65,12 +65,14 @@ DATE=$(date +%Y-%m-%d)
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
REPORT_TIME=$(date "+%Y-%m-%d %H:%M:%S")
ARCHIVE_NAME="fundtracker-backup-${TIMESTAMP}.tar.gz"
TMP_DIR="${TMP_BASE}/fundtracker-${TIMESTAMP}"
LOG_FILE="${BACKUP_ROOT}/backup.log"
# Variable placeholder for version (populated dynamically during run)
SITE_VERSION="unknown"
ARCHIVE_NAME="fundtracker-backup-${TIMESTAMP}.tar.gz"
# -----------------------------------------------------------------------------
# STATUS TRACKING
# -----------------------------------------------------------------------------
@ -146,7 +148,6 @@ log_section "FundTracker Backup Starting"
ARCHIVE_SIZE="N/A"
BACKUP_COUNT=0
FINAL_ARCHIVE="${BACKUP_ROOT}/${ARCHIVE_NAME}"
# -----------------------------------------------------------------------------
# PRE-FLIGHT CHECK 1 — NAS16 STORAGE
@ -251,9 +252,41 @@ fi
if [ "$OVERALL_STATUS" = "FAILED" ]; then
log "Pre-flight checks failed. Backup will not proceed."
FINAL_ARCHIVE="${BACKUP_ROOT}/${ARCHIVE_NAME}"
else
# =========================================================================
# QUERY SITE VERSION FROM DATABASE
# =========================================================================
log_section "Retrieving site version from database"
QUERY_VERSION=$(docker exec "$DB_CONTAINER" psql -U "$DB_USER" -d "$DB_NAME" -t -A -c \
"SELECT version_number FROM project_versions WHERE status = 'deployed' ORDER BY deployed_at DESC NULLS LAST LIMIT 1;" 2>/dev/null || true)
QUERY_VERSION="$(echo "${QUERY_VERSION}" | xargs)"
if [ -n "$QUERY_VERSION" ]; then
SITE_VERSION="$QUERY_VERSION"
ARCHIVE_NAME="fundtracker-v${SITE_VERSION}-backup-${TIMESTAMP}.tar.gz"
log "Deployed site version detected: v${SITE_VERSION}"
add_section_row \
"Project Version Check" \
"OK" \
"Detected deployed version v${SITE_VERSION}"
else
log "WARNING: Could not retrieve deployed version from 'project_versions' table. Using default naming."
add_section_row \
"Project Version Check" \
"WARNING" \
"Version query returned empty; falling back to standard naming"
fi
FINAL_ARCHIVE="${BACKUP_ROOT}/${ARCHIVE_NAME}"
# Create temporary working directory
mkdir -p "$TMP_DIR"
@ -270,9 +303,6 @@ else
DB_DUMP="${DB_DIR}/fundtracker.sql"
# pg_dump runs inside the PostgreSQL container.
#
# This is the same method documented by the FundTracker project itself.
#
# No database password is stored in this backup script.
if docker exec "$DB_CONTAINER" \
@ -373,6 +403,9 @@ Host:
Backup date:
$(date)
Site Version:
v${SITE_VERSION}
Project source:
${PROJECT_DIR}
@ -563,7 +596,7 @@ MANIFEST_EOF
log_section "Rotating old FundTracker backups"
BACKUP_LIST=$(ls -1t \
"${BACKUP_ROOT}"/fundtracker-backup-*.tar.gz \
"${BACKUP_ROOT}"/fundtracker-*.tar.gz \
2>/dev/null || true)
BACKUP_COUNT=$(echo "$BACKUP_LIST" | grep -c . || true)
@ -609,9 +642,10 @@ fi
log_section "FundTracker Backup Complete"
log "Archive: ${FINAL_ARCHIVE:-N/A}"
log "Size: ${ARCHIVE_SIZE:-N/A}"
log "Status: ${OVERALL_STATUS}"
log "Site Version: ${SITE_VERSION}"
log "Archive: ${FINAL_ARCHIVE:-N/A}"
log "Size: ${ARCHIVE_SIZE:-N/A}"
log "Status: ${OVERALL_STATUS}"
# =============================================================================
# EMAIL STATUS BANNER
@ -849,6 +883,13 @@ $ARCHIVE_CARD
<tr><td colspan="2" style="height:6px;"></td></tr>
<tr>
<td style="font-size:13px;color:#6b7280;">Site Version</td>
<td style="font-size:13px;color:#111827;font-weight:600;">v$SITE_VERSION</td>
</tr>
<tr><td colspan="2" style="height:6px;"></td></tr>
<tr>
<td style="font-size:13px;color:#6b7280;">Project Files</td>
<td style="font-family:monospace;font-size:11px;color:#111827;font-weight:600;">$PROJECT_DIR</td>
@ -969,5 +1010,3 @@ if [ "$OVERALL_STATUS" = "FAILED" ]; then
else
exit 0
fi
```