#!/bin/bash # Atlas CMMS Database Backup Script # This script creates a backup of the Atlas CMMS PostgreSQL database # Configuration CONTAINER_NAME="atlas_db" DB_NAME="atlas" DB_USER="rootUser" BACKUP_DIR="./backups" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") BACKUP_FILE="atlas_backup_${TIMESTAMP}.sql" # Create backup directory if it doesn't exist mkdir -p "${BACKUP_DIR}" echo "Starting Atlas CMMS database backup..." echo "Container: ${CONTAINER_NAME}" echo "Database: ${DB_NAME}" echo "Backup file: ${BACKUP_DIR}/${BACKUP_FILE}" # Check if container is running if ! docker ps | grep -q "${CONTAINER_NAME}"; then echo "Error: PostgreSQL container '${CONTAINER_NAME}' is not running" exit 1 fi # Create database backup docker exec "${CONTAINER_NAME}" pg_dump \ -U "${DB_USER}" \ -d "${DB_NAME}" \ --no-password \ --verbose \ --clean \ --if-exists \ --create > "${BACKUP_DIR}/${BACKUP_FILE}" # Check if backup was successful if [ $? -eq 0 ]; then echo "Backup completed successfully: ${BACKUP_DIR}/${BACKUP_FILE}" # Compress the backup file gzip "${BACKUP_DIR}/${BACKUP_FILE}" echo "Backup compressed: ${BACKUP_DIR}/${BACKUP_FILE}.gz" # Optional: Remove backups older than 30 days find "${BACKUP_DIR}" -name "atlas_backup_*.sql.gz" -mtime +30 -delete echo "Old backups (>30 days) cleaned up" else echo "Error: Backup failed" rm -f "${BACKUP_DIR}/${BACKUP_FILE}" exit 1 fi echo "Backup process completed"