backup db
This commit is contained in:
38
backup-invoice-db.sh
Executable file
38
backup-invoice-db.sh
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# /home/aknuth/scripts/backup-invoice-db.sh
|
||||||
|
# Daily PostgreSQL backup for quote-invoice-system → iDrive e2
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
BACKUP_DIR="/tmp/invoice-backups"
|
||||||
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||||
|
BACKUP_FILE="invoice_db_${TIMESTAMP}.sql.gz"
|
||||||
|
CONTAINER="quote_db"
|
||||||
|
DB_USER="quoteuser"
|
||||||
|
DB_NAME="quotes_db"
|
||||||
|
RCLONE_REMOTE="invoice-backup:invoice-postgresdb"
|
||||||
|
RETAIN_DAYS=30
|
||||||
|
|
||||||
|
echo "🗄️ [BACKUP] Starting invoice DB backup..."
|
||||||
|
|
||||||
|
# Create temp dir
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
|
||||||
|
# Dump and compress
|
||||||
|
docker exec "$CONTAINER" pg_dump -U "$DB_USER" "$DB_NAME" | gzip > "${BACKUP_DIR}/${BACKUP_FILE}"
|
||||||
|
|
||||||
|
FILESIZE=$(du -h "${BACKUP_DIR}/${BACKUP_FILE}" | cut -f1)
|
||||||
|
echo "📦 Dump complete: ${BACKUP_FILE} (${FILESIZE})"
|
||||||
|
|
||||||
|
# Upload to iDrive e2
|
||||||
|
rclone copy "${BACKUP_DIR}/${BACKUP_FILE}" "$RCLONE_REMOTE/" --log-level INFO
|
||||||
|
echo "☁️ Uploaded to ${RCLONE_REMOTE}/${BACKUP_FILE}"
|
||||||
|
|
||||||
|
# Clean up local temp
|
||||||
|
rm -f "${BACKUP_DIR}/${BACKUP_FILE}"
|
||||||
|
|
||||||
|
# Remove remote backups older than 30 days
|
||||||
|
rclone delete "$RCLONE_REMOTE" --min-age "${RETAIN_DAYS}d" --log-level INFO
|
||||||
|
echo "🧹 Remote cleanup done (>${RETAIN_DAYS} days)"
|
||||||
|
|
||||||
|
echo "✅ [BACKUP] Invoice DB backup complete."
|
||||||
Reference in New Issue
Block a user