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 <noreply@anthropic.com>
This commit is contained in:
S
2026-03-01 10:19:22 -05:00
parent f098abbe55
commit a44b49283b

View File

@@ -25,7 +25,8 @@ source "${SCRIPT_DIR}/lib/common.sh"
load_env load_env
require_vars UNRAID_IP UNRAID_SSH_USER UNRAID_GITEA_DATA_PATH \ 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" DATA_PATH="$UNRAID_GITEA_DATA_PATH"
@@ -123,6 +124,7 @@ ssh_exec UNRAID "
if [ -d repos ]; then mv repos '${DATA_PATH}/data/'; fi if [ -d repos ]; then mv repos '${DATA_PATH}/data/'; fi
# Move gitea.db (SQLite database) # Move gitea.db (SQLite database)
if [ -f gitea.db ]; then mv gitea.db '${DATA_PATH}/data/'; fi 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 if [ -f gitea-db.sql ]; then mv gitea-db.sql '${DATA_PATH}/data/'; fi
# Move config if present # Move config if present
if [ -f app.ini ]; then if [ -f app.ini ]; then
@@ -136,6 +138,30 @@ ssh_exec UNRAID "
" "
log_success "Archive extracted and files placed" 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 # Clean up archive from Unraid /tmp
ssh_exec UNRAID "rm -f '${UNRAID_ARCHIVE}'" ssh_exec UNRAID "rm -f '${UNRAID_ARCHIVE}'"