#!/bin/bash source "${AGENT_PATH}/common.sh" source "$(dirname "${BASH_SOURCE[0]}")/_volumes.sh" _check_required_env_vars "CONTAINER_NAME" echo "Backing up ${CONTAINER_NAME} ELK stack volumes..." echo "Note: This may take a while for large log databases" # Stop the containers to ensure data consistency bash ./stop.sh || true # Backup volumes BACKUP_DIR="${CONFIG_PATH}/backups/$(date +%Y%m%d_%H%M%S)" mkdir -p "$BACKUP_DIR" # Export volumes for volume in $(get_logserver_volumes); do volume_name=$(echo $volume | cut -d: -f3) echo "Backing up volume: $volume_name" docker run --rm -v "$volume_name:/source:ro" -v "$BACKUP_DIR:/backup" alpine \ tar -czf "/backup/${volume_name}.tar.gz" -C /source . done # Backup configuration cp -r "${CONFIG_PATH}" "$BACKUP_DIR/config_backup" # Backup docker-compose.yml cp docker-compose.yml "$BACKUP_DIR/" 2>/dev/null || true echo "Backup completed to: $BACKUP_DIR" echo "Size: $(du -sh $BACKUP_DIR | cut -f1)" # Restart the containers bash ./start.sh echo "ELK stack restarted"