1
0

backup_db.sh 868 B

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