Update 2 files
All checks were successful
Test and Publish Templates / test-and-publish (push) Successful in 39s
All checks were successful
Test and Publish Templates / test-and-publish (push) Successful in 39s
This commit is contained in:
@@ -1,21 +1,38 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
source "${AGENT_PATH}/common.sh"
|
source "${AGENT_PATH}/common.sh"
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "${SCRIPT_DIR}/_volumes.sh"
|
_check_required_env_vars "CONTAINER_NAME" "DATA_PATH" "DB_NAME" "DB_USER"
|
||||||
_check_required_env_vars "CONTAINER_NAME" "DATA_PATH"
|
|
||||||
|
|
||||||
# Export variables for docker compose
|
# Export variables for docker compose
|
||||||
export CONTAINER_NAME DATA_PATH HTTP_PORT PUID PGID TZ IMAGE_TAG DB_NAME DB_USER DB_PASS
|
export CONTAINER_NAME DATA_PATH HTTP_PORT PUID PGID TZ IMAGE_TAG DB_NAME DB_USER DB_PASS
|
||||||
|
|
||||||
cd "$SCRIPT_DIR"
|
cd "$SCRIPT_DIR"
|
||||||
|
|
||||||
# Stop containers for consistent backup
|
# Create backup directory
|
||||||
docker compose stop
|
BACKUP_DIR="${DATA_PATH}/backups"
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
|
||||||
# shellcheck disable=SC2046
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||||
backup_items $(get_wikijs_volumes) || _die "Failed to create backup"
|
BACKUP_FILE="${BACKUP_DIR}/wikijs_backup_${TIMESTAMP}.tar.gz"
|
||||||
|
|
||||||
# Restart containers
|
echo "Creating backup..."
|
||||||
docker compose start
|
|
||||||
|
|
||||||
echo "Backup created successfully"
|
# Dump PostgreSQL database
|
||||||
|
echo "Dumping PostgreSQL database..."
|
||||||
|
docker exec ${CONTAINER_NAME}_db pg_dump -U "$DB_USER" "$DB_NAME" > "${BACKUP_DIR}/database.sql" || _die "Failed to dump database"
|
||||||
|
|
||||||
|
# Create tarball of config, data, and database dump
|
||||||
|
echo "Creating backup archive..."
|
||||||
|
tar -czf "$BACKUP_FILE" \
|
||||||
|
-C "${DATA_PATH}" \
|
||||||
|
config \
|
||||||
|
data \
|
||||||
|
-C "${BACKUP_DIR}" \
|
||||||
|
database.sql \
|
||||||
|
|| _die "Failed to create backup archive"
|
||||||
|
|
||||||
|
# Clean up temporary database dump
|
||||||
|
rm -f "${BACKUP_DIR}/database.sql"
|
||||||
|
|
||||||
|
echo "Backup created: $BACKUP_FILE"
|
||||||
|
echo "Backup size: $(du -h "$BACKUP_FILE" | cut -f1)"
|
||||||
|
|||||||
@@ -1,22 +1,63 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
source "${AGENT_PATH}/common.sh"
|
source "${AGENT_PATH}/common.sh"
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "${SCRIPT_DIR}/_volumes.sh"
|
_check_required_env_vars "CONTAINER_NAME" "DATA_PATH" "DB_NAME" "DB_USER"
|
||||||
_check_required_env_vars "CONTAINER_NAME" "DATA_PATH"
|
|
||||||
|
|
||||||
# Export variables for docker compose
|
# Export variables for docker compose
|
||||||
export CONTAINER_NAME DATA_PATH HTTP_PORT PUID PGID TZ IMAGE_TAG DB_NAME DB_USER DB_PASS
|
export CONTAINER_NAME DATA_PATH HTTP_PORT PUID PGID TZ IMAGE_TAG DB_NAME DB_USER DB_PASS
|
||||||
|
|
||||||
cd "$SCRIPT_DIR"
|
cd "$SCRIPT_DIR"
|
||||||
|
|
||||||
# Stop containers before restore
|
# 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
|
docker compose down
|
||||||
|
|
||||||
# Restore data from backup file
|
# Create temp directory for extraction
|
||||||
# shellcheck disable=SC2046
|
TEMP_DIR=$(mktemp -d)
|
||||||
restore_items $(get_wikijs_volumes) || _die "Failed to restore data from backup file"
|
trap "rm -rf $TEMP_DIR" EXIT
|
||||||
|
|
||||||
# Reinstall service
|
# Extract backup
|
||||||
./install.sh || _die "Failed to reinstall service after restore"
|
echo "Extracting backup..."
|
||||||
|
tar -xzf "$BACKUP_FILE" -C "$TEMP_DIR" || _die "Failed to extract backup"
|
||||||
|
|
||||||
echo "Restore complete! Service is running again."
|
# 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!"
|
||||||
|
|||||||
Reference in New Issue
Block a user