#!/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" # 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 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)"