@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