Files
dropshell-templates/wikijs/restore.sh
j 624a5d8575
All checks were successful
Test and Publish Templates / test-and-publish (push) Successful in 39s
Update 2 files
2025-12-19 17:48:43 +13:00

64 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
source "${AGENT_PATH}/common.sh"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
_check_required_env_vars "CONTAINER_NAME" "DATA_PATH" "DB_NAME" "DB_USER"
# Export variables for docker compose
export CONTAINER_NAME DATA_PATH HTTP_PORT PUID PGID TZ IMAGE_TAG DB_NAME DB_USER DB_PASS
cd "$SCRIPT_DIR"
# Find the latest backup or use provided argument
BACKUP_DIR="${DATA_PATH}/backups"
if [ -n "$1" ]; then
BACKUP_FILE="$1"
else
BACKUP_FILE=$(ls -t "${BACKUP_DIR}"/wikijs_backup_*.tar.gz 2>/dev/null | head -1)
fi
[ -z "$BACKUP_FILE" ] && _die "No backup file found. Usage: restore.sh [backup_file]"
[ ! -f "$BACKUP_FILE" ] && _die "Backup file not found: $BACKUP_FILE"
echo "Restoring from: $BACKUP_FILE"
# Stop containers
echo "Stopping containers..."
docker compose down
# Create temp directory for extraction
TEMP_DIR=$(mktemp -d)
trap "rm -rf $TEMP_DIR" EXIT
# Extract backup
echo "Extracting backup..."
tar -xzf "$BACKUP_FILE" -C "$TEMP_DIR" || _die "Failed to extract backup"
# Restore config and data directories
echo "Restoring files..."
rm -rf "${DATA_PATH}/config" "${DATA_PATH}/data"
cp -r "${TEMP_DIR}/config" "${DATA_PATH}/"
cp -r "${TEMP_DIR}/data" "${DATA_PATH}/"
# Start database container only
echo "Starting database..."
docker compose up -d db
sleep 5
# Restore database
if [ -f "${TEMP_DIR}/database.sql" ]; then
echo "Restoring database..."
# Drop and recreate database
docker exec ${CONTAINER_NAME}_db psql -U "$DB_USER" -d postgres -c "DROP DATABASE IF EXISTS ${DB_NAME};"
docker exec ${CONTAINER_NAME}_db psql -U "$DB_USER" -d postgres -c "CREATE DATABASE ${DB_NAME};"
# Restore from dump
docker exec -i ${CONTAINER_NAME}_db psql -U "$DB_USER" -d "$DB_NAME" < "${TEMP_DIR}/database.sql" || _die "Failed to restore database"
else
echo "Warning: No database dump found in backup"
fi
# Start all containers
echo "Starting all containers..."
docker compose up -d
echo "Restore complete!"