82 lines
1.9 KiB
Batchfile
82 lines
1.9 KiB
Batchfile
@echo off
|
|
|
|
call :prepare
|
|
call :restore
|
|
|
|
exit /B 0
|
|
|
|
:prepare
|
|
echo Preparing to restore ...
|
|
|
|
set THISDIR_REL=%~dp0
|
|
set THISDIR=%THISDIR_REL:~0,-1%
|
|
set DOCKER_COMPOSE_DIR=%THISDIR%
|
|
set DATA_DIR=%DOCKER_COMPOSE_DIR%/data
|
|
|
|
exit /B
|
|
|
|
:restore
|
|
if exist "%DATA_DIR%" (
|
|
echo Restore data directory found
|
|
|
|
echo Removing existing data ...
|
|
docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" down --volumes
|
|
|
|
setlocal ENABLEDELAYEDEXPANSION
|
|
|
|
echo Performing a restore ...
|
|
|
|
endlocal
|
|
) else (
|
|
echo Restore data directory not found; doing nothing ...
|
|
)
|
|
|
|
exit /B
|
|
|
|
:restore_database
|
|
set CONTAINER_ID=%1
|
|
set SQL_SCHEMA_FILENAME=%2
|
|
set SQL_DATA_FILENAME=%3
|
|
set DB_NAME=%4
|
|
set DB_USERNAME=%5
|
|
set DISPLAY_NAME=%6
|
|
|
|
if exist "%DATA_DIR%\%SQL_SCHEMA_FILENAME%" (
|
|
echo Restoring the %DISPLAY_NAME% database ...
|
|
|
|
wait_pgdb %CONTAINER_ID%
|
|
|
|
echo SET session_replication_role = 'replica'; > c:\Windows\Temp\db-data.sql
|
|
type "%DATA_DIR%\%SQL_DATA_FILENAME%" >> c:\Windows\Temp\db-data.sql
|
|
|
|
echo Uploading %DISPLAY_NAME% database schema to Docker container ...
|
|
docker cp "%DATA_DIR%\%SQL_SCHEMA_FILENAME%" %CONTAINER_ID%:/tmp
|
|
|
|
echo Uploading %DISPLAY_NAME% database data to Docker container ...
|
|
docker cp c:\Windows\Temp\db-data.sql %CONTAINER_ID%:/tmp
|
|
del c:\Windows\Temp\db-data.sql
|
|
|
|
echo Restoring %DISPLAY_NAME% database schema ...
|
|
docker container exec %CONTAINER_ID% psql -U %DB_USERNAME% -f /tmp/%SQL_SCHEMA_FILENAME% %DB_NAME%
|
|
|
|
echo Restoring %DISPLAY_NAME% database data ...
|
|
docker container exec %CONTAINER_ID% psql -U %DB_USERNAME% -f /tmp/db-data.sql %DB_NAME%
|
|
)
|
|
|
|
exit /B
|
|
|
|
:restore_binaryData
|
|
set CONTAINER_ID=%1
|
|
set DATA_DIRECTORY=%2
|
|
set CONTAINER_PATH=%3
|
|
set DISPLAY_NAME=%4
|
|
|
|
if exist "%DATA_DIR%\%DATA_DIRECTORY%" (
|
|
echo Restoring the %DISPLAY_NAME% binary data ...
|
|
|
|
echo Copying %DISPLAY_NAME% binary data ...
|
|
docker cp "%DATA_DIR%\%DATA_DIRECTORY%" "%CONTAINER_ID%:%CONTAINER_PATH%"
|
|
)
|
|
|
|
exit /B
|