
All checks were successful
Test and Publish Templates / test-and-publish (push) Successful in 38s
56 lines
1.5 KiB
Bash
Executable File
56 lines
1.5 KiB
Bash
Executable File
#!/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 <backup_directory>"
|
|
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" |