From 5957e85ff3a87f928dcf8e4422e16441e46415a4 Mon Sep 17 00:00:00 2001 From: j Date: Fri, 19 Dec 2025 17:55:51 +1300 Subject: [PATCH] Update 2 files --- wikijs/backup.sh | 40 +++++++++++++++---------------------- wikijs/restore.sh | 50 ++++++++++++++--------------------------------- 2 files changed, 31 insertions(+), 59 deletions(-) diff --git a/wikijs/backup.sh b/wikijs/backup.sh index eb25dd7..0264c1e 100755 --- a/wikijs/backup.sh +++ b/wikijs/backup.sh @@ -1,6 +1,8 @@ #!/bin/bash +# shellcheck disable=SC1091 source "${AGENT_PATH}/common.sh" 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" # Export variables for docker compose @@ -8,31 +10,21 @@ export CONTAINER_NAME DATA_PATH HTTP_PORT PUID PGID TZ IMAGE_TAG DB_NAME DB_USER cd "$SCRIPT_DIR" -# Create backup directory -BACKUP_DIR="${DATA_PATH}/backups" -mkdir -p "$BACKUP_DIR" - -TIMESTAMP=$(date +%Y%m%d_%H%M%S) -BACKUP_FILE="${BACKUP_DIR}/wikijs_backup_${TIMESTAMP}.tar.gz" - -echo "Creating backup..." - -# Dump PostgreSQL database +# Dump PostgreSQL database before backup 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" +docker exec ${CONTAINER_NAME}_db pg_dump -U "$DB_USER" "$DB_NAME" > "${DATA_PATH}/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" +# Stop containers for consistent backup +docker compose stop -# Clean up temporary database dump -rm -f "${BACKUP_DIR}/database.sql" +# Backup using dropshell's backup system +# shellcheck disable=SC2046 +backup_items $(get_wikijs_volumes) || _die "Failed to create backup" -echo "Backup created: $BACKUP_FILE" -echo "Backup size: $(du -h "$BACKUP_FILE" | cut -f1)" +# Clean up database dump (it's now in the backup) +rm -f "${DATA_PATH}/database.sql" + +# Restart containers +docker compose start + +echo "Backup created successfully" diff --git a/wikijs/restore.sh b/wikijs/restore.sh index df8ee57..a34f01e 100755 --- a/wikijs/restore.sh +++ b/wikijs/restore.sh @@ -1,6 +1,8 @@ #!/bin/bash +# shellcheck disable=SC1091 source "${AGENT_PATH}/common.sh" 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" # Export variables for docker compose @@ -8,56 +10,34 @@ export CONTAINER_NAME DATA_PATH HTTP_PORT PUID PGID TZ IMAGE_TAG DB_NAME DB_USER 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..." +# Stop and remove containers before restore 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}/" +# Restore files using dropshell's restore system +# shellcheck disable=SC2046 +restore_items $(get_wikijs_volumes) || _die "Failed to restore data from backup file" # Start database container only -echo "Starting database..." docker compose up -d db +echo "Waiting for database to be ready..." sleep 5 -# Restore database -if [ -f "${TEMP_DIR}/database.sql" ]; then - echo "Restoring database..." +# Restore database if dump exists +if [ -f "${DATA_PATH}/database.sql" ]; then + echo "Restoring PostgreSQL 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" + docker exec -i ${CONTAINER_NAME}_db psql -U "$DB_USER" -d "$DB_NAME" < "${DATA_PATH}/database.sql" || _die "Failed to restore database" + # Clean up dump file + rm -f "${DATA_PATH}/database.sql" + echo "Database restored successfully" else echo "Warning: No database dump found in backup" fi # Start all containers -echo "Starting all containers..." docker compose up -d -echo "Restore complete!" +echo "Restore complete! Service is running."