v1.5: Lokales Datenbank-Backup nach D:\VPS_Backup

- backup/vps-db-backup.cmd: pg_dump | gzip vom Container mp-db via plink,
  Ablage D:\VPS_Backup\mieterportal\mieterportal-db-YYYY-MM-DD.sql.gz
- 14-taegige Aufbewahrung (forfiles), Plausibilitaetspruefung (Exitcode,
  Mindestgroesse), Log in backup.log
- Aufgabenplanung: taeglich 03:17 Uhr (interaktiv, Benutzer ah wegen Z:-Key)
- Probelauf erfolgreich, Doku in kimi.md
This commit is contained in:
2026-10-02 13:20:52 +02:00
parent 0bdf6e7b28
commit 995a0bea13
3 changed files with 62 additions and 2 deletions
+49
View File
@@ -0,0 +1,49 @@
@echo off
rem ============================================================
rem Hinterstein Mieterportal - Datenbank-Backup auf D:\VPS_Backup
rem Holt ein pg_dump vom VPS (Container mp-db) und legt es lokal
rem als gzip ab. Aufbewahrung: 14 Tage (forfiles).
rem Laeuft ueber Aufgabenplanung (taeglich 03:17 Uhr, Benutzer ah,
rem nur bei angemeldetem Benutzer - Z:-Laufwerk mit SSH-Key noetig).
rem Achtung: Keine Klammern in Echo-Texten innerhalb von IF-Bloecken
rem (wuerden den Block vorzeitig schliessen) - daher Labels statt Blöcke.
rem ============================================================
setlocal
set ZIEL=D:\VPS_Backup\mieterportal
set PLINK=C:\Program Files\PuTTY\plink.exe
set HOSTKEY=SHA256:4G3UxsugNkHH6BrPXScLXh+vX8P1sLgWKn8cZBKSRxw
set KEY=Z:\Devel\ssh\priv_ionos_hocks_vps.ppk
set PORT=38592
set SERVER=root@hocks.eu
set LOG=%ZIEL%\backup.log
if not exist "%ZIEL%" mkdir "%ZIEL%"
for /f %%d in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd"') do set DATUM=%%d
set DATEI=%ZIEL%\mieterportal-db-%DATUM%.sql.gz
echo [%DATE% %TIME%] Backup startet nach %DATEI% >> "%LOG%"
"%PLINK%" -batch -hostkey "%HOSTKEY%" -i "%KEY%" -P %PORT% %SERVER% "docker exec mp-db sh -c 'pg_dump -U mp -d mieterportal | gzip -9'" > "%DATEI%"
if errorlevel 1 goto :fehler_plink
for %%S in ("%DATEI%") do set GROESSE=%%~zS
if %GROESSE% LSS 10000 goto :fehler_klein
rem Aufbewahrung: Dateien aelter als 14 Tage loeschen
forfiles /p "%ZIEL%" /m mieterportal-db-*.sql.gz /d -14 /c "cmd /c del @path" 2>nul
echo [%DATE% %TIME%] OK: %GROESSE% Bytes, Aufraeumen abgeschlossen >> "%LOG%"
endlocal
exit /b 0
:fehler_plink
echo [%DATE% %TIME%] FEHLER: plink oder pg_dump lieferte Exitcode 1 oder hoeher >> "%LOG%"
if exist "%DATEI%" del "%DATEI%"
endlocal
exit /b 1
:fehler_klein
echo [%DATE% %TIME%] FEHLER: Dump zu klein ^(%GROESSE% Bytes^) - vermutlich Fehlerausgabe statt Dump >> "%LOG%"
del "%DATEI%"
endlocal
exit /b 1