This commit is contained in:
2026-01-24 17:04:42 +01:00
parent 90dd28e694
commit e9c3668beb
2 changed files with 132 additions and 0 deletions

View File

@@ -0,0 +1,86 @@
import subprocess
from pathlib import Path
from datetime import datetime
import traceback
import sys
from EmailMessagingGraph import send_mail
# =========================
# CONFIG TEST PC
# =========================
GBAK = r"C:\Program Files\Firebird\Firebird_2_5_CGM\bin\gbak.exe"
DB = r"localhost/3050:Z:\Medicus 3\data\MEDICUS.FDB"
BACKUP_DIR = Path(r"D:\medicusbackup")
FB_USER = "SYSDBA"
FB_PASS = "masterkey"
MAIL_TO = "vladimir.buzalka@buzalka.cz"
# =========================
# MAIN
# =========================
def main():
BACKUP_DIR.mkdir(parents=True, exist_ok=True)
now = datetime.now()
ts = now.strftime("%Y-%m-%d_%H-%M-%S")
fbk = BACKUP_DIR / f"MEDICUS_{ts}.fbk"
log = BACKUP_DIR / f"MEDICUS_{ts}.log"
cmd = [
GBAK,
"-b",
"-user", FB_USER,
"-pas", FB_PASS,
DB,
str(fbk),
"-v",
]
try:
with open(log, "w", encoding="utf-8") as f:
subprocess.run(
cmd,
stdout=f,
stderr=subprocess.STDOUT,
check=True,
)
send_mail(
MAIL_TO,
"✅ MEDICUS záloha OK (test PC)",
f"""Záloha MEDICUS proběhla úspěšně.
Čas: {now}
Soubor: {fbk}
Log: {log}
""",
)
except Exception:
err = traceback.format_exc()
send_mail(
MAIL_TO,
"❌ MEDICUS CHYBA ZÁLOHY (test PC)",
f"""Při záloze MEDICUS došlo k chybě.
Čas: {now}
Chyba:
{err}
Log:
{log}
""",
)
raise
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,46 @@
---
Upravená verze skriptu, prosím upravte si cesty, toto vše vložit do nějakého cmd souboru:
editují se pouze následující sekce:
rem /zalozeni slozek do kterych se ma zalohovat kdyz neexistuji/
rem /nastaveni serveru a portu a cest k db/
rem /zaloha/ - v případě že je soubor gbak umístěn jinde, je jiná cesta k Firebirdu
rem/odkud kam kopirovat/
@echo off
rem /nacteni aktualniho datumu a casu/
For /f "tokens=1-3 delims=/." %%a in ("%DATE%") do (set mydate=%%c-%%b-%%a)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a-%%b)
@echo on
rem /zalozeni slozek do kterych se ma zalohovat kdyz neexistuji/
if not exist "C:\zalohy\MEDICUS" mkdir "C:\zalohy\MEDICUS"
if not exist "C:\backup\MEDICUS" mkdir "C:\backup\MEDICUS"
rem /nastaveni serveru a portu a cest k db/
set ufdb="localhost/3050:c:\Medicus\Medicus Komfort\data\sestavy.fdb"
rem /nastaveni cesty pro umisteni zalohy/
set ufbk="C:\zalohy\MEDICUS\MEDICUS3_%mydate%%mytime%.FBK" -y "C:\zalohy\MEDICUS\log%mydate%_%mytime%.txt"
rem /zaloha/
"C:\Program Files (x86)\Firebird\Firebird_2_5\bin\gbak" -b -user SYSDBA -pas masterke %ufdb% %ufbk% -v
rem/odkud kam kopirovat/
set odkud="C:\zalohy\MEDICUS*.*"
set kam="C:\backup\MEDICUS"
SET drv1=%odkud:~1,1%
SET drv2=%kam:~1,1%
if %drv1%==%drv2% goto :move
if not %drv1%==%drv2% goto :copy
:move
rem /presunuti do jineho umisteni/
move /Y %odkud% %kam%
goto :exit
:copy
rem /kopiruj a smaz/
copy /Y %odkud% %kam%
del /Q %odkud%
goto :exit
:exit
timeout /T 5
exit
Zajímavé odkazy rovněž zde:
https://docplayer.cz/665150-Databaze-firebird-zalohovani-obnoveni-roman-fic-1-29-14-databaze.html
http://www.epos.cz/obis4wiki/firebird:zalohovani_databazi_-_gbak
Pohodový den přeje
Mgr. Josef Kauc
KONZULTANT MEDICUS