1
0

backup_db.sh 955 B

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