CoolFace
Apppublic

codedematrix/datacollection

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
backup.sh34 linesDownload Raw Back to scripts
1#!/usr/bin/env bash2# NCA Data Collection System — automated backup script3# Intended to be run by cron. Keeps the last 30 daily backups.4#5# Crontab entry (runs at 01:00 every day):6#   0 1 * * * /opt/nca-data-collection/scripts/backup.sh >> /var/log/nca-backup.log 2>&17 8set -euo pipefail9 10SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"11PROJECT_DIR="$(dirname "$SCRIPT_DIR")"12BACKUP_DIR="$PROJECT_DIR/backups"13KEEP_DAYS=3014TIMESTAMP="$(date +%Y-%m-%d_%H-%M)"15FILENAME="$BACKUP_DIR/nca_db_$TIMESTAMP.sql.gz"16 17mkdir -p "$BACKUP_DIR"18 19echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] Starting backup..."20 21# Database dump (compressed)22docker compose -f "$PROJECT_DIR/docker-compose.prod.yml" exec -T db \23  pg_dump -U nca nca_dc | gzip > "$FILENAME"24 25echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] Database backup written to $FILENAME ($(du -h "$FILENAME" | cut -f1))"26 27# Remove backups older than KEEP_DAYS28DELETED=$(find "$BACKUP_DIR" -name "nca_db_*.sql.gz" -mtime +$KEEP_DAYS -print -delete | wc -l)29if [ "$DELETED" -gt 0 ]; then30  echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] Removed $DELETED old backup(s) (>${KEEP_DAYS}d)"31fi32 33echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] Backup complete."34