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:
@@ -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}'"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user