#!/bin/bash source "${AGENT_PATH}/common.sh" source "$(dirname "${BASH_SOURCE[0]}")/_volumes.sh" _check_required_env_vars "CONTAINER_NAME" if [ -z "$1" ]; then echo "Usage: $0 " echo "Available backups:" ls -la "${CONFIG_PATH}/backups/" 2>/dev/null || echo "No backups found" exit 1 fi BACKUP_DIR="$1" if [ ! -d "$BACKUP_DIR" ]; then _die "Backup directory not found: $BACKUP_DIR" fi echo "Restoring ELK stack from backup: $BACKUP_DIR" echo "WARNING: This will overwrite all current data!" # Stop the containers bash ./stop.sh || true # Restore volumes for volume in $(get_logserver_volumes); do volume_name=$(echo $volume | cut -d: -f3) backup_file="$BACKUP_DIR/${volume_name}.tar.gz" if [ -f "$backup_file" ]; then echo "Restoring volume: $volume_name" # Clear existing data and restore docker run --rm -v "$volume_name:/target" -v "$BACKUP_DIR:/backup:ro" alpine \ sh -c "rm -rf /target/* && tar -xzf /backup/${volume_name}.tar.gz -C /target" else echo "Warning: Backup file not found for $volume_name" fi done # Restore configuration if exists if [ -d "$BACKUP_DIR/config_backup" ]; then cp -r "$BACKUP_DIR/config_backup/"* "${CONFIG_PATH}/" fi # Restore docker-compose.yml if exists if [ -f "$BACKUP_DIR/docker-compose.yml" ]; then cp "$BACKUP_DIR/docker-compose.yml" . fi echo "Restore completed" # Start the containers bash ./start.sh echo "ELK stack restarted with restored data"