From a44b49283baf6f1a71f502a9ba52e1ff01d21311 Mon Sep 17 00:00:00 2001 From: S Date: Sun, 1 Mar 2026 10:19:22 -0500 Subject: [PATCH] feat: add external database import to restore_to_primary.sh After extracting the archive, import gitea-db.sql into the running DB container for postgres/mysql/mssql. Each DB type uses its native CLI tool inside the container. SQLite restores remain unchanged. Add GITEA_DB_TYPE to require_vars. Co-Authored-By: Claude Opus 4.6 --- backup/restore_to_primary.sh | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/backup/restore_to_primary.sh b/backup/restore_to_primary.sh index ac13327..2c750a6 100755 --- a/backup/restore_to_primary.sh +++ b/backup/restore_to_primary.sh @@ -25,7 +25,8 @@ source "${SCRIPT_DIR}/lib/common.sh" load_env require_vars UNRAID_IP UNRAID_SSH_USER UNRAID_GITEA_DATA_PATH \ - GITEA_INTERNAL_URL GITEA_ADMIN_USER GITEA_ADMIN_PASSWORD + GITEA_INTERNAL_URL GITEA_ADMIN_USER GITEA_ADMIN_PASSWORD \ + GITEA_DB_TYPE DATA_PATH="$UNRAID_GITEA_DATA_PATH" @@ -123,6 +124,7 @@ ssh_exec UNRAID " if [ -d repos ]; then mv repos '${DATA_PATH}/data/'; fi # Move gitea.db (SQLite database) if [ -f gitea.db ]; then mv gitea.db '${DATA_PATH}/data/'; fi + # Keep gitea-db.sql for external DB import (moved below) if [ -f gitea-db.sql ]; then mv gitea-db.sql '${DATA_PATH}/data/'; fi # Move config if present if [ -f app.ini ]; then @@ -136,6 +138,30 @@ ssh_exec UNRAID " " log_success "Archive extracted and files placed" +# Import SQL dump into external database container (skip for sqlite3) +if [[ "${GITEA_DB_TYPE}" != "sqlite3" ]]; then + log_step "4b" "Importing SQL dump into ${GITEA_DB_TYPE} database..." + SQL_FILE="${DATA_PATH}/data/gitea-db.sql" + if ssh_exec UNRAID "test -f '${SQL_FILE}'" 2>/dev/null; then + case "${GITEA_DB_TYPE}" in + postgres) + ssh_exec UNRAID "docker exec -i gitea-db psql -U '${GITEA_DB_USER}' '${GITEA_DB_NAME}' < '${SQL_FILE}'" + ;; + mysql) + ssh_exec UNRAID "docker exec -i gitea-db mysql -u '${GITEA_DB_USER}' -p'${GITEA_DB_PASSWD}' '${GITEA_DB_NAME}' < '${SQL_FILE}'" + ;; + mssql) + # Copy SQL file into container then import + ssh_exec UNRAID "docker cp '${SQL_FILE}' gitea-db:/tmp/gitea-db.sql && \ + docker exec gitea-db /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P '${GITEA_DB_PASSWD}' -d '${GITEA_DB_NAME}' -i /tmp/gitea-db.sql -C -N" + ;; + esac + log_success "SQL dump imported into ${GITEA_DB_TYPE}" + else + log_warn "No gitea-db.sql found in archive — database may need manual import" + fi +fi + # Clean up archive from Unraid /tmp ssh_exec UNRAID "rm -f '${UNRAID_ARCHIVE}'"