backup_db.sh 894 B

123456789101112131415161718192021222324252627282930313233
  1. #!/bin/bash
  2. # $Id$
  3. # $Author$
  4. # $log$
  5. # backup_db.sh - Automated Disaster Recovery Backup Script
  6. BACKUP_DIR="./backups"
  7. DB_CONTAINER="food_project-mysql-1"
  8. DB_NAME="food_db"
  9. RETENTION_DAYS=7
  10. DATE=$(date +"%Y%m%d_%H%M%S")
  11. BACKUP_FILE="$BACKUP_DIR/food_db_$DATE.sql.gz"
  12. echo "Starting Database Backup for $DB_NAME..."
  13. # Ensure backup directory exists
  14. mkdir -p "$BACKUP_DIR"
  15. # Execute mysqldump inside the container and pipe to gzip
  16. sudo docker exec $DB_CONTAINER mysqldump -u root -proot_pass $DB_NAME | gzip > "$BACKUP_FILE"
  17. if [ $? -eq 0 ]; then
  18. echo "Backup successfully saved to $BACKUP_FILE"
  19. else
  20. echo "Error: Database backup failed!"
  21. exit 1
  22. fi
  23. # Apply retention policy
  24. echo "Applying retention policy: keeping backups for $RETENTION_DAYS days..."
  25. find "$BACKUP_DIR" -name "food_db_*.sql.gz" -type f -mtime +$RETENTION_DAYS -exec rm {} \;
  26. echo "Backup process completed."