55 lines
1.5 KiB
Bash
Executable File
55 lines
1.5 KiB
Bash
Executable File
#!/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" |